@finos/legend-cube-builder 0.0.4 → 0.0.6
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.
- package/README.md +9 -3
- package/docs/adding-an-operation.md +24 -12
- package/docs/demo/DEMO-FAST-NOTES.md +67 -0
- package/docs/demo/README.md +102 -0
- package/docs/demo/specs/duckdb-sales-pivot.cube.json +110 -0
- package/docs/demo/specs/trades-desks-1-joined.cube.json +123 -0
- package/docs/demo/specs/trades-desks-2-grouped.cube.json +140 -0
- package/docs/demo/specs/trades-desks-3-ranked.cube.json +158 -0
- package/docs/demo/specs/trades-desks-4-extended.cube.json +208 -0
- package/docs/demo/specs/trades-desks-5-final.cube.json +248 -0
- package/docs/hosting.md +83 -5
- package/docs/testing.md +32 -0
- package/lib/__lib__/LegendCubeCommand.d.ts +2 -0
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeCommand.js +7 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -1
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeHelpText.js +16 -2
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
- package/lib/__lib__/LegendCubeLabels.d.ts +130 -9
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +169 -17
- package/lib/__lib__/LegendCubeLabels.js.map +1 -1
- package/lib/__lib__/LegendCubeNavigation.d.ts +23 -0
- package/lib/__lib__/LegendCubeNavigation.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeNavigation.js +33 -0
- package/lib/__lib__/LegendCubeNavigation.js.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
- package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +10 -1
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeTesting.js +9 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -1
- package/lib/__lib__/LegendCubeTour.d.ts +62 -0
- package/lib/__lib__/LegendCubeTour.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeTour.js +149 -0
- package/lib/__lib__/LegendCubeTour.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +2 -2
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
- package/lib/__test-utils__/CubeExampleTestUtils.d.ts +34 -0
- package/lib/__test-utils__/CubeExampleTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeExampleTestUtils.js +72 -0
- package/lib/__test-utils__/CubeExampleTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +8 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.js +20 -3
- package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts +6 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.js +21 -0
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts +9 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.js +16 -0
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
- package/lib/__test-utils__/CubeVariantTestUtils.d.ts +16 -0
- package/lib/__test-utils__/CubeVariantTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeVariantTestUtils.js +66 -0
- package/lib/__test-utils__/CubeVariantTestUtils.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +5 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.js +17 -0
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +7 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.js +16 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -1
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
- package/lib/components/CubeAddItems.d.ts.map +1 -1
- package/lib/components/CubeAddItems.js +11 -7
- package/lib/components/CubeAddItems.js.map +1 -1
- package/lib/components/CubeDialogTheme.d.ts +25 -0
- package/lib/components/CubeDialogTheme.d.ts.map +1 -0
- package/lib/components/CubeDialogTheme.js +25 -0
- package/lib/components/CubeDialogTheme.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +12 -1
- package/lib/components/CubeEditor.d.ts.map +1 -1
- package/lib/components/CubeEditor.js +22 -14
- package/lib/components/CubeEditor.js.map +1 -1
- package/lib/components/CubeFileMenu.d.ts +28 -0
- package/lib/components/CubeFileMenu.d.ts.map +1 -0
- package/lib/components/CubeFileMenu.js +78 -0
- package/lib/components/CubeFileMenu.js.map +1 -0
- package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
- package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
- package/lib/components/CubeLambdaImportBanner.js +47 -0
- package/lib/components/CubeLambdaImportBanner.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -1
- package/lib/components/CubeNodeIcon.js +6 -1
- package/lib/components/CubeNodeIcon.js.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.js +2 -2
- package/lib/components/CubeSchemaColumnsTable.js.map +1 -1
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvas.js +40 -6
- package/lib/components/canvas/CubeCanvas.js.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js +2 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +58 -3
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
- package/lib/components/canvas/CubeCanvasLayout.js +1 -1
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.js +11 -4
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
- package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
- package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
- package/lib/components/dev-settings/CubeDevSettings.js +54 -0
- package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnChecklist.js +2 -2
- package/lib/components/editors/CubeColumnChecklist.js.map +1 -1
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnPicker.js +6 -4
- package/lib/components/editors/CubeColumnPicker.js.map +1 -1
- package/lib/components/editors/CubeConcatEditor.js +2 -2
- package/lib/components/editors/CubeConcatEditor.js.map +1 -1
- package/lib/components/editors/CubeExplodeEditor.d.ts +26 -0
- package/lib/components/editors/CubeExplodeEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExplodeEditor.js +61 -0
- package/lib/components/editors/CubeExplodeEditor.js.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js +86 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
- package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeExtendEditor.js +13 -12
- package/lib/components/editors/CubeExtendEditor.js.map +1 -1
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeFilterEditor.js +13 -2
- package/lib/components/editors/CubeFilterEditor.js.map +1 -1
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +16 -4
- package/lib/components/editors/CubeJoinEditor.js.map +1 -1
- package/lib/components/editors/CubeJsonFieldsTree.d.ts +46 -0
- package/lib/components/editors/CubeJsonFieldsTree.d.ts.map +1 -0
- package/lib/components/editors/CubeJsonFieldsTree.js +93 -0
- package/lib/components/editors/CubeJsonFieldsTree.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.js +18 -8
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts +5 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.js +10 -2
- package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js +11 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
- package/lib/components/editors/CubePivotEditor.d.ts +26 -0
- package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePivotEditor.js +93 -0
- package/lib/components/editors/CubePivotEditor.js.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.js +2 -2
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
- package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
- package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
- package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.js +77 -0
- package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
- package/lib/components/grid/CubeGridRegion.js +43 -28
- package/lib/components/grid/CubeGridRegion.js.map +1 -1
- package/lib/components/grid/CubeGridValues.d.ts +36 -4
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
- package/lib/components/grid/CubeGridValues.js +116 -4
- package/lib/components/grid/CubeGridValues.js.map +1 -1
- package/lib/components/grid/CubeJsonExplorerDialog.d.ts +27 -0
- package/lib/components/grid/CubeJsonExplorerDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeJsonExplorerDialog.js +102 -0
- package/lib/components/grid/CubeJsonExplorerDialog.js.map +1 -0
- package/lib/components/grid/CubeJsonViewerDialog.d.ts +27 -0
- package/lib/components/grid/CubeJsonViewerDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeJsonViewerDialog.js +68 -0
- package/lib/components/grid/CubeJsonViewerDialog.js.map +1 -0
- package/lib/components/grid/CubeResultGrid.d.ts +81 -6
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +400 -35
- package/lib/components/grid/CubeResultGrid.js.map +1 -1
- package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
- package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
- package/lib/components/grid/CubeRunStatsPanel.js +61 -0
- package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.js +116 -0
- package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
- package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
- package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlDialog.js +39 -0
- package/lib/components/grid/CubeSqlDialog.js.map +1 -0
- package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
- package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlFormat.js +32 -0
- package/lib/components/grid/CubeSqlFormat.js.map +1 -0
- package/lib/components/palette/CubePalette.d.ts.map +1 -1
- package/lib/components/palette/CubePalette.js +36 -14
- package/lib/components/palette/CubePalette.js.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
- package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.js +37 -16
- package/lib/components/source-picker/CubeDataProductTab.js.map +1 -1
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeDirectConnectionTab.js +6 -4
- package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -1
- package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
- package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
- package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
- package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts +2 -2
- package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeIngestTab.js +49 -20
- package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
- package/lib/components/source-picker/CubeInlineModelTab.d.ts +3 -2
- package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeInlineModelTab.js +23 -13
- package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -1
- package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
- package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerListItem.js +62 -0
- package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts +4 -3
- package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeProjectTab.js +7 -4
- package/lib/components/source-picker/CubeProjectTab.js.map +1 -1
- package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
- package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeServiceTab.js +36 -0
- package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
- package/lib/components/source-picker/CubeSourcePicker.js +16 -3
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
- package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
- package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
- package/lib/components/source-picker/CubeTablePreview.js +10 -0
- package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
- package/lib/components/tour/CubeTour.d.ts +36 -0
- package/lib/components/tour/CubeTour.d.ts.map +1 -0
- package/lib/components/tour/CubeTour.js +183 -0
- package/lib/components/tour/CubeTour.js.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts +10 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -1
- package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -1
- package/lib/graph-manager/CubeEngine.d.ts +46 -1
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/CubeEngine.js.map +1 -1
- package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
- package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
- package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
- package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
- package/lib/graph-manager/CubeIngest.d.ts +5 -0
- package/lib/graph-manager/CubeIngest.d.ts.map +1 -1
- package/lib/graph-manager/CubeIngest.js +10 -0
- package/lib/graph-manager/CubeIngest.js.map +1 -1
- package/lib/graph-manager/CubeIngestCatalog.d.ts +26 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -1
- package/lib/graph-manager/CubeIngestCatalog.js +6 -0
- package/lib/graph-manager/CubeIngestCatalog.js.map +1 -1
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts +3 -3
- package/lib/graph-manager/CubeService.d.ts +20 -0
- package/lib/graph-manager/CubeService.d.ts.map +1 -0
- package/lib/graph-manager/CubeService.js +22 -0
- package/lib/graph-manager/CubeService.js.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.js +17 -0
- package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +52 -5
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +63 -5
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +9 -6
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +12 -8
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +18 -9
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +4 -9
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +49 -10
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +18 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +74 -6
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +7 -4
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +6 -2
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +13 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -1
- package/lib/index.js.map +1 -1
- package/lib/stores/CubeAddPlacement.d.ts +10 -3
- package/lib/stores/CubeAddPlacement.d.ts.map +1 -1
- package/lib/stores/CubeAddPlacement.js +16 -5
- package/lib/stores/CubeAddPlacement.js.map +1 -1
- package/lib/stores/CubeDevSettingsState.d.ts +47 -0
- package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
- package/lib/stores/CubeDevSettingsState.js +99 -0
- package/lib/stores/CubeDevSettingsState.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +189 -43
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +532 -117
- package/lib/stores/CubeEditorState.js.map +1 -1
- package/lib/stores/CubeEngineChecks.d.ts +59 -0
- package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
- package/lib/stores/CubeEngineChecks.js +100 -0
- package/lib/stores/CubeEngineChecks.js.map +1 -0
- package/lib/stores/CubeExamples.d.ts.map +1 -1
- package/lib/stores/CubeExamples.js +136 -2
- package/lib/stores/CubeExamples.js.map +1 -1
- package/lib/stores/CubeExamplesState.d.ts +1 -1
- package/lib/stores/CubeExamplesState.d.ts.map +1 -1
- package/lib/stores/CubeExamplesState.js +6 -3
- package/lib/stores/CubeExamplesState.js.map +1 -1
- package/lib/stores/CubeExecutionState.d.ts.map +1 -1
- package/lib/stores/CubeExecutionState.js +24 -33
- package/lib/stores/CubeExecutionState.js.map +1 -1
- package/lib/stores/CubeExportState.d.ts +41 -0
- package/lib/stores/CubeExportState.d.ts.map +1 -0
- package/lib/stores/CubeExportState.js +134 -0
- package/lib/stores/CubeExportState.js.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.js +134 -0
- package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
- package/lib/stores/CubeExtendTyping.d.ts +6 -14
- package/lib/stores/CubeExtendTyping.d.ts.map +1 -1
- package/lib/stores/CubeExtendTyping.js +6 -33
- package/lib/stores/CubeExtendTyping.js.map +1 -1
- package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
- package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
- package/lib/stores/CubeFunctionRecheck.js +67 -0
- package/lib/stores/CubeFunctionRecheck.js.map +1 -0
- package/lib/stores/CubeGridFetcher.d.ts +75 -0
- package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
- package/lib/stores/CubeGridFetcher.js +197 -0
- package/lib/stores/CubeGridFetcher.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +25 -6
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
- package/lib/stores/CubeGridQuickActions.js +52 -23
- package/lib/stores/CubeGridQuickActions.js.map +1 -1
- package/lib/stores/CubeGridState.d.ts +136 -0
- package/lib/stores/CubeGridState.d.ts.map +1 -0
- package/lib/stores/CubeGridState.js +317 -0
- package/lib/stores/CubeGridState.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +42 -0
- package/lib/stores/CubeHost.d.ts.map +1 -1
- package/lib/stores/CubeHost.js +4 -0
- package/lib/stores/CubeHost.js.map +1 -1
- package/lib/stores/CubeLambdaImportState.d.ts +118 -0
- package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
- package/lib/stores/CubeLambdaImportState.js +302 -0
- package/lib/stores/CubeLambdaImportState.js.map +1 -0
- package/lib/stores/CubeLambdaSources.d.ts +45 -0
- package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
- package/lib/stores/CubeLambdaSources.js +261 -0
- package/lib/stores/CubeLambdaSources.js.map +1 -0
- package/lib/stores/CubePureText.d.ts +20 -0
- package/lib/stores/CubePureText.d.ts.map +1 -0
- package/lib/stores/CubePureText.js +24 -0
- package/lib/stores/CubePureText.js.map +1 -0
- package/lib/stores/CubeQueryRun.d.ts +59 -0
- package/lib/stores/CubeQueryRun.d.ts.map +1 -0
- package/lib/stores/CubeQueryRun.js +101 -0
- package/lib/stores/CubeQueryRun.js.map +1 -0
- package/lib/stores/CubeRunStatsState.d.ts +61 -0
- package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
- package/lib/stores/CubeRunStatsState.js +54 -0
- package/lib/stores/CubeRunStatsState.js.map +1 -0
- package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
- package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
- package/lib/stores/CubeRunningStepLambda.js +45 -0
- package/lib/stores/CubeRunningStepLambda.js.map +1 -0
- package/lib/stores/CubeServiceRecheck.d.ts +29 -0
- package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
- package/lib/stores/CubeServiceRecheck.js +33 -0
- package/lib/stores/CubeServiceRecheck.js.map +1 -0
- package/lib/stores/CubeShowPureState.d.ts +14 -1
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +41 -11
- package/lib/stores/CubeShowPureState.js.map +1 -1
- package/lib/stores/CubeSourcePickerState.d.ts +20 -4
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
- package/lib/stores/CubeSourcePickerState.js +75 -14
- package/lib/stores/CubeSourcePickerState.js.map +1 -1
- package/lib/stores/CubeTourState.d.ts +49 -0
- package/lib/stores/CubeTourState.d.ts.map +1 -0
- package/lib/stores/CubeTourState.js +92 -0
- package/lib/stores/CubeTourState.js.map +1 -0
- package/lib/stores/LegendCubeHost.d.ts +88 -0
- package/lib/stores/LegendCubeHost.d.ts.map +1 -0
- package/lib/stores/LegendCubeHost.js +149 -0
- package/lib/stores/LegendCubeHost.js.map +1 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
- package/lib/stores/LocalModelCatalog.js +3 -1
- package/lib/stores/LocalModelCatalog.js.map +1 -1
- package/lib/stores/editors/CubeExplodeDraft.d.ts +87 -0
- package/lib/stores/editors/CubeExplodeDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExplodeDraft.js +221 -0
- package/lib/stores/editors/CubeExplodeDraft.js.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +94 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js +258 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts +9 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeExtendDraft.js +26 -0
- package/lib/stores/editors/CubeExtendDraft.js.map +1 -1
- package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
- package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeFunctionDraft.js +69 -0
- package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +25 -3
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
- package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
- package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePivotDraft.js +267 -0
- package/lib/stores/editors/CubePivotDraft.js.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +27 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js +52 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts +4 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -1
- package/lib/stores/fixtures/CubeTradesModel.js +31 -1
- package/lib/stores/fixtures/CubeTradesModel.js.map +1 -1
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts +34 -5
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeDataProductTabState.js +111 -26
- package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +25 -2
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js +183 -31
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeIngestTabState.d.ts +62 -15
- package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeIngestTabState.js +212 -60
- package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +100 -4
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeInlineModelTabState.js +415 -28
- package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeProjectTabState.d.ts +18 -3
- package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeProjectTabState.js +26 -1
- package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
- package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
- package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +15 -3
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeSourcePickerTab.js +21 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -1
- package/lib/stores/variant/CubeJson.d.ts +48 -0
- package/lib/stores/variant/CubeJson.d.ts.map +1 -0
- package/lib/stores/variant/CubeJson.js +207 -0
- package/lib/stores/variant/CubeJson.js.map +1 -0
- package/lib/stores/variant/CubeJsonExplorerState.d.ts +88 -0
- package/lib/stores/variant/CubeJsonExplorerState.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonExplorerState.js +297 -0
- package/lib/stores/variant/CubeJsonExplorerState.js.map +1 -0
- package/lib/stores/variant/CubeJsonFieldsState.d.ts +83 -0
- package/lib/stores/variant/CubeJsonFieldsState.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonFieldsState.js +207 -0
- package/lib/stores/variant/CubeJsonFieldsState.js.map +1 -0
- package/lib/stores/variant/CubeJsonOffers.d.ts +76 -0
- package/lib/stores/variant/CubeJsonOffers.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonOffers.js +250 -0
- package/lib/stores/variant/CubeJsonOffers.js.map +1 -0
- package/lib/stores/variant/CubeJsonParse.d.ts +28 -0
- package/lib/stores/variant/CubeJsonParse.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonParse.js +53 -0
- package/lib/stores/variant/CubeJsonParse.js.map +1 -0
- package/lib/stores/variant/CubeJsonSampling.d.ts +41 -0
- package/lib/stores/variant/CubeJsonSampling.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonSampling.js +59 -0
- package/lib/stores/variant/CubeJsonSampling.js.map +1 -0
- package/lib/stores/variant/CubeJsonShape.d.ts +87 -0
- package/lib/stores/variant/CubeJsonShape.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonShape.js +209 -0
- package/lib/stores/variant/CubeJsonShape.js.map +1 -0
- package/lib/stores/variant/CubeJsonViewerState.d.ts +33 -0
- package/lib/stores/variant/CubeJsonViewerState.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonViewerState.js +53 -0
- package/lib/stores/variant/CubeJsonViewerState.js.map +1 -0
- package/package.json +10 -9
- package/src/__lib__/LegendCubeCommand.ts +7 -0
- package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
- package/src/__lib__/LegendCubeHelpText.ts +27 -1
- package/src/__lib__/LegendCubeLabels.ts +225 -16
- package/src/__lib__/LegendCubeNavigation.ts +48 -0
- package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
- package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
- package/src/__lib__/LegendCubeTesting.ts +9 -0
- package/src/__lib__/LegendCubeTour.ts +173 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +2 -1
- package/src/__test-utils__/CubeExampleTestUtils.ts +119 -0
- package/src/__test-utils__/CubeExpressionTestUtils.ts +29 -2
- package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
- package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
- package/src/__test-utils__/CubePageTestUtils.tsx +34 -0
- package/src/__test-utils__/CubeTestApplication.ts +25 -0
- package/src/__test-utils__/CubeVariantTestUtils.ts +103 -0
- package/src/__test-utils__/FakeCubeEngine.ts +27 -0
- package/src/__test-utils__/FakeCubeIngestCatalog.ts +18 -0
- package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
- package/src/components/CubeAddItems.tsx +15 -6
- package/src/components/CubeDialogTheme.ts +25 -0
- package/src/components/CubeEditor.tsx +170 -129
- package/src/components/CubeFileMenu.tsx +129 -0
- package/src/components/CubeLambdaImportBanner.tsx +97 -0
- package/src/components/CubeNodeIcon.tsx +9 -0
- package/src/components/CubeSchemaColumnsTable.tsx +7 -2
- package/src/components/canvas/CubeCanvas.tsx +65 -10
- package/src/components/canvas/CubeCanvasContextMenu.tsx +33 -2
- package/src/components/canvas/CubeCanvasElements.ts +76 -3
- package/src/components/canvas/CubeCanvasLayout.ts +1 -1
- package/src/components/canvas/CubeCanvasNode.tsx +37 -3
- package/src/components/dev-settings/CubeDevSettings.tsx +169 -0
- package/src/components/editors/CubeColumnChecklist.tsx +8 -2
- package/src/components/editors/CubeColumnPicker.tsx +9 -3
- package/src/components/editors/CubeConcatEditor.tsx +2 -2
- package/src/components/editors/CubeExplodeEditor.tsx +207 -0
- package/src/components/editors/CubeExpressionFilterEditor.tsx +210 -0
- package/src/components/editors/CubeExtendEditor.tsx +34 -21
- package/src/components/editors/CubeFilterEditor.tsx +13 -1
- package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
- package/src/components/editors/CubeJoinEditor.tsx +23 -4
- package/src/components/editors/CubeJsonFieldsTree.tsx +316 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +22 -10
- package/src/components/editors/CubeNodeEditorPopper.tsx +9 -1
- package/src/components/editors/CubeNodeEditorRegistry.ts +15 -0
- package/src/components/editors/CubePivotEditor.tsx +277 -0
- package/src/components/editors/CubeRestrictEditor.tsx +8 -2
- package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
- package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
- package/src/components/grid/CubeDrilldownBar.tsx +219 -0
- package/src/components/grid/CubeGridRegion.tsx +190 -56
- package/src/components/grid/CubeGridValues.ts +154 -4
- package/src/components/grid/CubeJsonExplorerDialog.tsx +304 -0
- package/src/components/grid/CubeJsonViewerDialog.tsx +190 -0
- package/src/components/grid/CubeResultGrid.tsx +586 -42
- package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
- package/src/components/grid/CubeServerSideGrid.tsx +213 -0
- package/src/components/grid/CubeSqlDialog.tsx +90 -0
- package/src/components/grid/CubeSqlFormat.ts +37 -0
- package/src/components/palette/CubePalette.tsx +54 -12
- package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
- package/src/components/source-picker/CubeDataProductTab.tsx +169 -75
- package/src/components/source-picker/CubeDirectConnectionTab.tsx +42 -30
- package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
- package/src/components/source-picker/CubeIngestTab.tsx +195 -83
- package/src/components/source-picker/CubeInlineModelTab.tsx +110 -81
- package/src/components/source-picker/CubePickerListItem.tsx +118 -0
- package/src/components/source-picker/CubeProjectTab.tsx +6 -3
- package/src/components/source-picker/CubeServiceTab.tsx +151 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +54 -18
- package/src/components/source-picker/CubeTablePreview.tsx +49 -0
- package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +21 -8
- package/src/components/tour/CubeTour.tsx +317 -0
- package/src/graph-manager/CubeDataProductCatalog.ts +11 -0
- package/src/graph-manager/CubeEngine.ts +51 -1
- package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
- package/src/graph-manager/CubeIngest.ts +15 -0
- package/src/graph-manager/CubeIngestCatalog.ts +33 -0
- package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
- package/src/graph-manager/CubeProjectCatalog.ts +3 -3
- package/src/graph-manager/CubeService.ts +29 -0
- package/src/graph-manager/CubeServiceCatalog.ts +35 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +115 -5
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +13 -7
- package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +35 -9
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +6 -15
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +70 -15
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +7 -1
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +122 -7
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +9 -4
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +6 -1
- package/src/index.ts +39 -2
- package/src/stores/CubeAddPlacement.ts +25 -5
- package/src/stores/CubeDevSettingsState.ts +117 -0
- package/src/stores/CubeEditorState.ts +722 -201
- package/src/stores/CubeEngineChecks.ts +240 -0
- package/src/stores/CubeExamples.ts +188 -1
- package/src/stores/CubeExamplesState.ts +13 -3
- package/src/stores/CubeExecutionState.ts +26 -57
- package/src/stores/CubeExportState.ts +196 -0
- package/src/stores/CubeExpressionFilterCheck.ts +218 -0
- package/src/stores/CubeExtendTyping.ts +6 -46
- package/src/stores/CubeFunctionRecheck.ts +97 -0
- package/src/stores/CubeGridFetcher.ts +302 -0
- package/src/stores/CubeGridQuickActions.ts +56 -23
- package/src/stores/CubeGridState.ts +450 -0
- package/src/stores/CubeHost.ts +48 -0
- package/src/stores/CubeLambdaImportState.ts +434 -0
- package/src/stores/CubeLambdaSources.ts +390 -0
- package/src/stores/CubePureText.ts +28 -0
- package/src/stores/CubeQueryRun.ts +169 -0
- package/src/stores/CubeRunStatsState.ts +91 -0
- package/src/stores/CubeRunningStepLambda.ts +62 -0
- package/src/stores/CubeServiceRecheck.ts +53 -0
- package/src/stores/CubeShowPureState.ts +51 -12
- package/src/stores/CubeSourcePickerState.ts +89 -13
- package/src/stores/CubeTourState.ts +116 -0
- package/src/stores/LegendCubeHost.ts +243 -0
- package/src/stores/LocalModelCatalog.ts +6 -1
- package/src/stores/editors/CubeExplodeDraft.ts +272 -0
- package/src/stores/editors/CubeExpressionFilterDraft.ts +389 -0
- package/src/stores/editors/CubeExtendDraft.ts +29 -0
- package/src/stores/editors/CubeFunctionDraft.ts +92 -0
- package/src/stores/editors/CubeNodeDraftRegistry.ts +34 -2
- package/src/stores/editors/CubePivotDraft.ts +355 -0
- package/src/stores/fixtures/CubeSalesDuckDbModel.ts +60 -0
- package/src/stores/fixtures/CubeTradesModel.ts +36 -1
- package/src/stores/source-picker/CubeDataProductTabState.ts +162 -35
- package/src/stores/source-picker/CubeDirectConnectionTabState.ts +246 -47
- package/src/stores/source-picker/CubeIngestTabState.ts +331 -106
- package/src/stores/source-picker/CubeInlineModelTabState.ts +514 -34
- package/src/stores/source-picker/CubeProjectTabState.ts +35 -3
- package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
- package/src/stores/source-picker/CubeSourcePickerTab.ts +31 -2
- package/src/stores/variant/CubeJson.ts +229 -0
- package/src/stores/variant/CubeJsonExplorerState.ts +378 -0
- package/src/stores/variant/CubeJsonFieldsState.ts +252 -0
- package/src/stores/variant/CubeJsonOffers.ts +359 -0
- package/src/stores/variant/CubeJsonParse.ts +75 -0
- package/src/stores/variant/CubeJsonSampling.ts +90 -0
- package/src/stores/variant/CubeJsonShape.ts +279 -0
- package/src/stores/variant/CubeJsonViewerState.ts +59 -0
- package/tsconfig.json +72 -1
|
@@ -22,7 +22,11 @@ import {
|
|
|
22
22
|
type Schema,
|
|
23
23
|
storeAccessor,
|
|
24
24
|
} from '@finos/legend-cube';
|
|
25
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
EXECUTION_SERIALIZATION_FORMAT,
|
|
27
|
+
V1_EngineServerClient,
|
|
28
|
+
V1_RenderStyle,
|
|
29
|
+
} from '@finos/legend-graph';
|
|
26
30
|
import {
|
|
27
31
|
ContentType,
|
|
28
32
|
HttpHeader,
|
|
@@ -50,6 +54,8 @@ import {
|
|
|
50
54
|
getCubeIngestSettings,
|
|
51
55
|
isCubeIngestModel,
|
|
52
56
|
} from '../../../CubeIngest.js';
|
|
57
|
+
import type { CubeEngineClientSettings } from '../../../CubeEngineClientSettings.js';
|
|
58
|
+
import type { CubeDataProductModelSource } from '../../../CubeDataProductCatalog.js';
|
|
53
59
|
import type { CubeLakehouseEnvironment } from '../../../CubeLakehouseEnvironment.js';
|
|
54
60
|
import {
|
|
55
61
|
checkCubeProjectModel,
|
|
@@ -287,6 +293,8 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
287
293
|
private readonly getRememberedWarehouse: () => string | undefined;
|
|
288
294
|
/** The deployed ingest definitions, which ingest cubes read */
|
|
289
295
|
private readonly ingestDefinitions: V1_CubeIngestDefinitionSource | undefined;
|
|
296
|
+
/** The model data product cubes read their project from, when not its deployed version */
|
|
297
|
+
private readonly dataProductModels: CubeDataProductModelSource | undefined;
|
|
290
298
|
|
|
291
299
|
constructor(
|
|
292
300
|
config: V1_CubeEngineConfig,
|
|
@@ -295,15 +303,42 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
295
303
|
lakehouseEnvironment?: CubeLakehouseEnvironment | undefined;
|
|
296
304
|
getRememberedWarehouse?: (() => string | undefined) | undefined;
|
|
297
305
|
ingestDefinitions?: V1_CubeIngestDefinitionSource | undefined;
|
|
306
|
+
/** Dev Settings' engine URL and compression (PLAN §11.16) */
|
|
307
|
+
clientSettings?: CubeEngineClientSettings | undefined;
|
|
308
|
+
dataProductModels?: CubeDataProductModelSource | undefined;
|
|
298
309
|
},
|
|
299
310
|
) {
|
|
300
311
|
this.client = new V1_EngineServerClient(config);
|
|
301
312
|
// every call throws without one
|
|
302
313
|
this.client.setTracerService(tracerService);
|
|
314
|
+
options?.clientSettings?.register(this.client);
|
|
303
315
|
this.lakehouseEnvironment = options?.lakehouseEnvironment;
|
|
304
316
|
this.getRememberedWarehouse =
|
|
305
317
|
options?.getRememberedWarehouse ?? (() => undefined);
|
|
306
318
|
this.ingestDefinitions = options?.ingestDefinitions;
|
|
319
|
+
this.dataProductModels = options?.dataProductModels;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* The elements an ingest cube's model holds: the host's, when it has more
|
|
324
|
+
* than the definitions (Studio's workspace), else the definitions read
|
|
325
|
+
*/
|
|
326
|
+
private async ingestModelElementsOf(
|
|
327
|
+
definitions: ReadonlyMap<string, PlainObject | CubeEngineError>,
|
|
328
|
+
): Promise<readonly PlainObject[]> {
|
|
329
|
+
const source = this.ingestDefinitions;
|
|
330
|
+
return source?.getModelElements
|
|
331
|
+
? source.getModelElements()
|
|
332
|
+
: [...definitions.values()].filter(
|
|
333
|
+
(read): read is PlainObject => !(read instanceof CubeEngineError),
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/** The model a data product cube's project is read from: the host's, else its deployed version's pointer */
|
|
338
|
+
private async dataProductProjectModelOf(
|
|
339
|
+
project: CubeDataProductProject,
|
|
340
|
+
): Promise<PlainObject | undefined> {
|
|
341
|
+
return this.dataProductModels?.getProjectModel(project);
|
|
307
342
|
}
|
|
308
343
|
|
|
309
344
|
/** An ingest model's settings, or an unsupported-model error naming its problems */
|
|
@@ -636,7 +671,21 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
636
671
|
]),
|
|
637
672
|
);
|
|
638
673
|
}
|
|
639
|
-
|
|
674
|
+
let projectModel: PlainObject | undefined;
|
|
675
|
+
try {
|
|
676
|
+
projectModel = await this.dataProductProjectModelOf(project);
|
|
677
|
+
} catch (error) {
|
|
678
|
+
return new Map(
|
|
679
|
+
[...lambdas.keys()].map((nodeId) => [
|
|
680
|
+
nodeId,
|
|
681
|
+
V1_toCubeEngineError(error, nodeId, CubeEngineErrorKind.COMPILE),
|
|
682
|
+
]),
|
|
683
|
+
);
|
|
684
|
+
}
|
|
685
|
+
return this.typeOn(
|
|
686
|
+
V1_buildCubeDataProductTypingContext(project, projectModel),
|
|
687
|
+
lambdas,
|
|
688
|
+
);
|
|
640
689
|
}
|
|
641
690
|
|
|
642
691
|
/**
|
|
@@ -705,9 +754,19 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
705
754
|
typable.set(nodeId, ir);
|
|
706
755
|
}
|
|
707
756
|
});
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
757
|
+
let elements: readonly PlainObject[];
|
|
758
|
+
try {
|
|
759
|
+
elements = await this.ingestModelElementsOf(definitions);
|
|
760
|
+
} catch (error) {
|
|
761
|
+
typable.forEach((_ir, nodeId) =>
|
|
762
|
+
typed.set(
|
|
763
|
+
nodeId,
|
|
764
|
+
toIngestError(error, CubeEngineErrorKind.COMPILE, nodeId),
|
|
765
|
+
),
|
|
766
|
+
);
|
|
767
|
+
typable.clear();
|
|
768
|
+
elements = [];
|
|
769
|
+
}
|
|
711
770
|
(
|
|
712
771
|
await this.typeOn(V1_buildCubeIngestTypingContext(elements), typable)
|
|
713
772
|
).forEach((schema, nodeId) => typed.set(nodeId, schema));
|
|
@@ -938,6 +997,39 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
938
997
|
}
|
|
939
998
|
}
|
|
940
999
|
|
|
1000
|
+
async exportCsv(
|
|
1001
|
+
model: ModelContext,
|
|
1002
|
+
executionLambda: IR,
|
|
1003
|
+
options?: { abortController?: AbortController | undefined },
|
|
1004
|
+
): Promise<string> {
|
|
1005
|
+
const captureId = captureNodeOf(executionLambda);
|
|
1006
|
+
const context = await this.executionContextOf(
|
|
1007
|
+
model,
|
|
1008
|
+
executionLambda,
|
|
1009
|
+
captureId,
|
|
1010
|
+
options?.abortController,
|
|
1011
|
+
);
|
|
1012
|
+
try {
|
|
1013
|
+
const body = this.executionBodyOf(model, context, executionLambda);
|
|
1014
|
+
// the engine answers CSV under a JSON content type, and a failure as JSON with status 500 (PLAN §11.10)
|
|
1015
|
+
const response = (await this.client.runQuery(
|
|
1016
|
+
body as unknown as PlainObject,
|
|
1017
|
+
{
|
|
1018
|
+
returnAsResponse: true,
|
|
1019
|
+
serializationFormat: EXECUTION_SERIALIZATION_FORMAT.CSV,
|
|
1020
|
+
abortController: options?.abortController,
|
|
1021
|
+
},
|
|
1022
|
+
)) as Response;
|
|
1023
|
+
return await response.text();
|
|
1024
|
+
} catch (error) {
|
|
1025
|
+
throw V1_toCubeEngineError(
|
|
1026
|
+
error,
|
|
1027
|
+
captureId,
|
|
1028
|
+
CubeEngineErrorKind.EXECUTION,
|
|
1029
|
+
);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
|
|
941
1033
|
/**
|
|
942
1034
|
* The model a run on a data product cube runs on (PLAN §6.8): its project at
|
|
943
1035
|
* the saved version, and a lakehouse runtime at Cube's fixed path, in the
|
|
@@ -975,10 +1067,21 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
975
1067
|
captureId,
|
|
976
1068
|
);
|
|
977
1069
|
}
|
|
1070
|
+
let projectModel: PlainObject | undefined;
|
|
1071
|
+
try {
|
|
1072
|
+
projectModel = await this.dataProductProjectModelOf(project);
|
|
1073
|
+
} catch (error) {
|
|
1074
|
+
throw V1_toCubeEngineError(
|
|
1075
|
+
error,
|
|
1076
|
+
captureId,
|
|
1077
|
+
CubeEngineErrorKind.EXECUTION,
|
|
1078
|
+
);
|
|
1079
|
+
}
|
|
978
1080
|
return V1_buildCubeDataProductExecutionContext(
|
|
979
1081
|
project,
|
|
980
1082
|
environment,
|
|
981
1083
|
getEffectiveCubeWarehouse(project, this.getRememberedWarehouse()),
|
|
1084
|
+
projectModel,
|
|
982
1085
|
);
|
|
983
1086
|
}
|
|
984
1087
|
|
|
@@ -1015,13 +1118,17 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
1015
1118
|
V1_getCubeIngestUrns(accessors),
|
|
1016
1119
|
settings,
|
|
1017
1120
|
);
|
|
1018
|
-
const elements: PlainObject[] = [];
|
|
1019
1121
|
definitions.forEach((read) => {
|
|
1020
1122
|
if (read instanceof CubeEngineError) {
|
|
1021
1123
|
throw toIngestError(read, CubeEngineErrorKind.EXECUTION, captureId);
|
|
1022
1124
|
}
|
|
1023
|
-
elements.push(read);
|
|
1024
1125
|
});
|
|
1126
|
+
let elements: readonly PlainObject[];
|
|
1127
|
+
try {
|
|
1128
|
+
elements = await this.ingestModelElementsOf(definitions);
|
|
1129
|
+
} catch (error) {
|
|
1130
|
+
throw toIngestError(error, CubeEngineErrorKind.EXECUTION, captureId);
|
|
1131
|
+
}
|
|
1025
1132
|
let environment: string;
|
|
1026
1133
|
try {
|
|
1027
1134
|
environment = await source.getRuntimeEnvironment(
|
|
@@ -1204,6 +1311,14 @@ export class V1_LegendCubeEngine implements CubeEngine {
|
|
|
1204
1311
|
}
|
|
1205
1312
|
}
|
|
1206
1313
|
|
|
1314
|
+
serializeLambda(lambdaIR: IR): string {
|
|
1315
|
+
return stringifyLosslessJSON(
|
|
1316
|
+
V1_serializeCubeLambda(lambdaIR),
|
|
1317
|
+
undefined,
|
|
1318
|
+
2,
|
|
1319
|
+
);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1207
1322
|
async renderPure(lambdaIR: IR): Promise<string> {
|
|
1208
1323
|
try {
|
|
1209
1324
|
// sent as text, as typing and execution are: the serialized lambda holds
|
|
@@ -44,13 +44,13 @@ export const V1_compareCubeProjectVersionsNewestFirst = (
|
|
|
44
44
|
return 0;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
/** The paths of a model's Databases */
|
|
48
|
-
const
|
|
47
|
+
/** The paths of a model's elements of a type: its Databases, or its functions by full name */
|
|
48
|
+
const elementPathsOf = (modelData: PlainObject, type: string): Set<string> =>
|
|
49
49
|
new Set(
|
|
50
50
|
(Array.isArray(modelData.elements) ? modelData.elements : [])
|
|
51
51
|
.filter(
|
|
52
52
|
(element: PlainObject) =>
|
|
53
|
-
element._type ===
|
|
53
|
+
element._type === type &&
|
|
54
54
|
typeof element.package === 'string' &&
|
|
55
55
|
typeof element.name === 'string',
|
|
56
56
|
)
|
|
@@ -135,13 +135,18 @@ export class V1_LegendCubeProjectCatalog implements CubeProjectCatalog {
|
|
|
135
135
|
true,
|
|
136
136
|
),
|
|
137
137
|
]);
|
|
138
|
-
const ownDatabases =
|
|
138
|
+
const ownDatabases = elementPathsOf(own, 'relational');
|
|
139
|
+
const ownFunctions = elementPathsOf(own, 'function');
|
|
140
|
+
// a function's runtime is read through its dependencies' functions too
|
|
139
141
|
const outline = V1_buildCubeModelOutline(withDependencies);
|
|
140
142
|
return {
|
|
141
143
|
...outline,
|
|
142
144
|
databases: outline.databases.filter((database) =>
|
|
143
145
|
ownDatabases.has(database.path),
|
|
144
146
|
),
|
|
147
|
+
functions: (outline.functions ?? []).filter((fn) =>
|
|
148
|
+
ownFunctions.has(fn.signature),
|
|
149
|
+
),
|
|
145
150
|
};
|
|
146
151
|
}
|
|
147
152
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
DeploymentOwnershipDetail,
|
|
19
|
+
type ServiceDetail,
|
|
20
|
+
UserListOwnershipDetail,
|
|
21
|
+
} from '@finos/legend-graph';
|
|
22
|
+
import { HttpStatus, NetworkClientError } from '@finos/legend-shared';
|
|
23
|
+
import type {
|
|
24
|
+
CubeServiceCatalog,
|
|
25
|
+
CubeServiceSummary,
|
|
26
|
+
} from '../../../CubeServiceCatalog.js';
|
|
27
|
+
|
|
28
|
+
/** Who owns a service, as people read it */
|
|
29
|
+
const ownersOf = (service: ServiceDetail): readonly string[] =>
|
|
30
|
+
service.ownership instanceof UserListOwnershipDetail
|
|
31
|
+
? service.ownership.users
|
|
32
|
+
: service.ownership instanceof DeploymentOwnershipDetail
|
|
33
|
+
? [`Deployment ${service.ownership.identifier}`]
|
|
34
|
+
: [];
|
|
35
|
+
|
|
36
|
+
/** Why the list can't be read, when the engine has no service registry */
|
|
37
|
+
export const V1_CUBE_NO_SERVICE_REGISTRY_MESSAGE =
|
|
38
|
+
"This Legend deployment's engine has no service registry, so it lists no services";
|
|
39
|
+
|
|
40
|
+
const toSummary = (service: ServiceDetail): CubeServiceSummary => ({
|
|
41
|
+
name: service.name,
|
|
42
|
+
title: service.title?.trim() ? service.title.trim() : undefined,
|
|
43
|
+
pattern: service.pattern,
|
|
44
|
+
documentation: service.documentation,
|
|
45
|
+
owners: ownersOf(service),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Lists the services in the engine's registry
|
|
50
|
+
* (`/service/v1/list/detailsFromCache`, as Marketplace's Data APIs page). The
|
|
51
|
+
* list is read once per page; a failed read is tried again.
|
|
52
|
+
*/
|
|
53
|
+
export class V1_LegendCubeServiceCatalog implements CubeServiceCatalog {
|
|
54
|
+
private readonly readServices: () => Promise<ServiceDetail[]>;
|
|
55
|
+
private services: Promise<readonly CubeServiceSummary[]> | undefined;
|
|
56
|
+
|
|
57
|
+
constructor(readServices: () => Promise<ServiceDetail[]>) {
|
|
58
|
+
this.readServices = readServices;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
listServices(): Promise<readonly CubeServiceSummary[]> {
|
|
62
|
+
if (!this.services) {
|
|
63
|
+
const services = this.readServices()
|
|
64
|
+
.catch((error: unknown) => {
|
|
65
|
+
// the registry isn't in the open-source engine
|
|
66
|
+
throw error instanceof NetworkClientError &&
|
|
67
|
+
error.response.status === HttpStatus.NOT_FOUND
|
|
68
|
+
? new Error(V1_CUBE_NO_SERVICE_REGISTRY_MESSAGE)
|
|
69
|
+
: error;
|
|
70
|
+
})
|
|
71
|
+
.then((details) =>
|
|
72
|
+
details
|
|
73
|
+
.filter((detail) => detail.name && detail.pattern)
|
|
74
|
+
.map(toSummary)
|
|
75
|
+
.sort(
|
|
76
|
+
(left, right) =>
|
|
77
|
+
(left.title ?? left.name).localeCompare(
|
|
78
|
+
right.title ?? right.name,
|
|
79
|
+
) || left.name.localeCompare(right.name),
|
|
80
|
+
),
|
|
81
|
+
);
|
|
82
|
+
// a failed read is tried again next time
|
|
83
|
+
services.catch(() => {
|
|
84
|
+
if (this.services === services) {
|
|
85
|
+
this.services = undefined;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
this.services = services;
|
|
89
|
+
}
|
|
90
|
+
return this.services;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { jest } from '@jest/globals';
|
|
18
|
+
import { V1_getEngineSerializationFormat } from '@finos/legend-graph';
|
|
18
19
|
import {
|
|
19
20
|
ENGINE_TEST_SUPPORT__grammarToJSON_model,
|
|
20
21
|
ENGINE_TEST_SUPPORT_API_URL,
|
|
@@ -105,9 +106,13 @@ export const V1_createEngineBackedCubeEngine = (): {
|
|
|
105
106
|
);
|
|
106
107
|
const runQuery = jest
|
|
107
108
|
.spyOn(client, 'runQuery')
|
|
108
|
-
.mockImplementation(async (input) => {
|
|
109
|
+
.mockImplementation(async (input, options) => {
|
|
110
|
+
// the format as the client sends it, e.g. CSV (PLAN §11.10)
|
|
109
111
|
const response = await CUBE_ENGINE_TEST__execute(
|
|
110
112
|
input as unknown as string,
|
|
113
|
+
options?.serializationFormat
|
|
114
|
+
? V1_getEngineSerializationFormat(options.serializationFormat)
|
|
115
|
+
: undefined,
|
|
111
116
|
);
|
|
112
117
|
if (!response.ok) {
|
|
113
118
|
throw clientError(response.status, parseOrText(await response.text()));
|
package/src/index.ts
CHANGED
|
@@ -19,7 +19,11 @@ export {
|
|
|
19
19
|
LEGEND_CUBE_COMMAND_KEY,
|
|
20
20
|
} from './__lib__/LegendCubeCommand.js';
|
|
21
21
|
export { LEGEND_CUBE_TEST_ID } from './__lib__/LegendCubeTesting.js';
|
|
22
|
-
export {
|
|
22
|
+
export { CubeButton } from './components/CubeButton.js';
|
|
23
|
+
export { CubeEditor, type CubeHeaderActions } from './components/CubeEditor.js';
|
|
24
|
+
export type { CubeEditorState } from './stores/CubeEditorState.js';
|
|
25
|
+
export { buildCubeRunningStepLambda } from './stores/CubeRunningStepLambda.js';
|
|
26
|
+
export { formatDisabledReasons } from './__lib__/LegendCubeLabels.js';
|
|
23
27
|
export {
|
|
24
28
|
type CubeAccessPointEntry,
|
|
25
29
|
type CubeEntrySource,
|
|
@@ -32,8 +36,11 @@ export * from './graph-manager/CubeDataProductCatalog.js';
|
|
|
32
36
|
export * from './graph-manager/CubeIngest.js';
|
|
33
37
|
export * from './graph-manager/CubeIngestCatalog.js';
|
|
34
38
|
export * from './graph-manager/CubeEngine.js';
|
|
39
|
+
export * from './graph-manager/CubeEngineClientSettings.js';
|
|
35
40
|
export * from './graph-manager/CubeProject.js';
|
|
36
41
|
export * from './graph-manager/CubeProjectCatalog.js';
|
|
42
|
+
export * from './graph-manager/CubeService.js';
|
|
43
|
+
export * from './graph-manager/CubeServiceCatalog.js';
|
|
37
44
|
export { getRuntimesForDatabase } from './graph-manager/CubeModelOutlineHelper.js';
|
|
38
45
|
export {
|
|
39
46
|
buildCubeConnectionExplorer,
|
|
@@ -42,12 +49,42 @@ export {
|
|
|
42
49
|
buildCubeEngine,
|
|
43
50
|
buildCubeLakehouseEnvironment,
|
|
44
51
|
buildCubeProjectCatalog,
|
|
52
|
+
buildCubeServiceCatalog,
|
|
53
|
+
readCubeIngestDataSets,
|
|
54
|
+
serializeCubeLambdaForHost,
|
|
45
55
|
type CubeEngineConfig,
|
|
46
56
|
type CubeLakehouseServices,
|
|
47
57
|
} from './graph-manager/protocol/pure/CubeEngineBuilder.js';
|
|
48
58
|
export type { CubeLakehouseEnvironment } from './graph-manager/CubeLakehouseEnvironment.js';
|
|
49
|
-
export
|
|
59
|
+
export {
|
|
60
|
+
type CubeHost,
|
|
61
|
+
type CubeHostProject,
|
|
62
|
+
type CubeHostProjectRuntime,
|
|
63
|
+
isCubeProjectHost,
|
|
64
|
+
isCubeSampleDataOffered,
|
|
65
|
+
} from './stores/CubeHost.js';
|
|
66
|
+
export {
|
|
67
|
+
buildLegendCubeLakehouseServices,
|
|
68
|
+
buildLegendCubeProjectCatalog,
|
|
69
|
+
LegendCubeHost,
|
|
70
|
+
type LegendCubeHostConfig,
|
|
71
|
+
type LegendCubeHostParts,
|
|
72
|
+
} from './stores/LegendCubeHost.js';
|
|
50
73
|
export { getCubeRememberedWarehouse } from './stores/CubeDataProductWarehouse.js';
|
|
74
|
+
export {
|
|
75
|
+
CUBE_LAMBDA_IMPORT_MESSAGE,
|
|
76
|
+
CubeLambdaFidelity,
|
|
77
|
+
getCubeLambdaFidelity,
|
|
78
|
+
readCubeLambdaDocument,
|
|
79
|
+
type CubeInitialLambda,
|
|
80
|
+
type CubeLambdaImportState,
|
|
81
|
+
type CubeLambdaReading,
|
|
82
|
+
} from './stores/CubeLambdaImportState.js';
|
|
83
|
+
export {
|
|
84
|
+
bindCubeLambdaSources,
|
|
85
|
+
CUBE_LAMBDA_SOURCES_MESSAGE,
|
|
86
|
+
type CubeLambdaBinding,
|
|
87
|
+
} from './stores/CubeLambdaSources.js';
|
|
51
88
|
export {
|
|
52
89
|
BUNDLED_MODELS,
|
|
53
90
|
type BundledModel,
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import type { CubeEditorState } from './CubeEditorState.js';
|
|
18
|
+
import { CUBE_NODE_TYPES_WITHOUT_SETTINGS } from './editors/CubeNodeDraftRegistry.js';
|
|
18
19
|
|
|
19
20
|
// Where a node added from the palette, the canvas's context menu or 'Add
|
|
20
21
|
// Items' goes (PLAN §11.8, QUESTIONS.md U3 and U4): one rule for all of them.
|
|
@@ -34,7 +35,21 @@ export const getCubeAddAfterId = (
|
|
|
34
35
|
? undefined
|
|
35
36
|
: (targetNodeId ?? editorState.document.query.selected);
|
|
36
37
|
|
|
37
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Why a node of the type can't be added where the rule puts it, on the
|
|
40
|
+
* database the query there runs on: a Pivot where it can't run (PLAN §11.12)
|
|
41
|
+
*/
|
|
42
|
+
export const getCubeAddDatabaseProblem = (
|
|
43
|
+
editorState: CubeEditorState,
|
|
44
|
+
type: string,
|
|
45
|
+
targetNodeId?: string,
|
|
46
|
+
): string | undefined =>
|
|
47
|
+
editorState.getAddDatabaseProblem(
|
|
48
|
+
type,
|
|
49
|
+
getCubeAddAfterId(editorState, type, targetNodeId),
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
/** Whether a node of the type can be added where the rule puts it, and run on its database */
|
|
38
53
|
export const canAddCubeNode = (
|
|
39
54
|
editorState: CubeEditorState,
|
|
40
55
|
type: string,
|
|
@@ -43,12 +58,14 @@ export const canAddCubeNode = (
|
|
|
43
58
|
editorState.canAddNode(
|
|
44
59
|
type,
|
|
45
60
|
getCubeAddAfterId(editorState, type, targetNodeId),
|
|
46
|
-
);
|
|
61
|
+
) && getCubeAddDatabaseProblem(editorState, type, targetNodeId) === undefined;
|
|
47
62
|
|
|
48
63
|
/**
|
|
49
64
|
* Adds a node of the type where the rule puts it, after the node editor's
|
|
50
|
-
* edits are applied: a transform with its defaults,
|
|
51
|
-
*
|
|
65
|
+
* edits are applied: a transform with its defaults, its editor opened when
|
|
66
|
+
* it has settings to set, since it can't run until they are (UX audit B3,
|
|
67
|
+
* user, 2026-10-11, in place of U3's "no add opens the editor"); a source
|
|
68
|
+
* through the source dialog, on its tab
|
|
52
69
|
*/
|
|
53
70
|
export const addCubeNode = (
|
|
54
71
|
editorState: CubeEditorState,
|
|
@@ -59,9 +76,12 @@ export const addCubeNode = (
|
|
|
59
76
|
canAddCubeNode(editorState, type, targetNodeId) &&
|
|
60
77
|
editorState.nodeEditor.finishApplied()
|
|
61
78
|
) {
|
|
62
|
-
editorState.addNode(
|
|
79
|
+
const id = editorState.addNode(
|
|
63
80
|
type,
|
|
64
81
|
getCubeAddAfterId(editorState, type, targetNodeId),
|
|
65
82
|
);
|
|
83
|
+
if (id !== undefined && !CUBE_NODE_TYPES_WITHOUT_SETTINGS.includes(type)) {
|
|
84
|
+
editorState.nodeEditor.open(id);
|
|
85
|
+
}
|
|
66
86
|
}
|
|
67
87
|
};
|
|
@@ -0,0 +1,117 @@
|
|
|
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 { isValidUrl } from '@finos/legend-shared';
|
|
18
|
+
import { action, computed, makeObservable, observable } from 'mobx';
|
|
19
|
+
import { LEGEND_CUBE_USER_DATA_KEY } from '../__lib__/LegendCubeLabels.js';
|
|
20
|
+
import type { CubeEngineClientSettings } from '../graph-manager/CubeEngineClientSettings.js';
|
|
21
|
+
import type { CubeHost } from './CubeHost.js';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The page's Dev Settings, opened from the menu at the top left as Legend
|
|
25
|
+
* Query's editor opens its own (PLAN §11.16): the engine's URL, and whether
|
|
26
|
+
* Cube's engine clients compress their requests (uncompressed, the browser's
|
|
27
|
+
* Network tab shows each request's JSON). Compression is kept for the user,
|
|
28
|
+
* on by default; the URL lasts while the application runs, as Query's does.
|
|
29
|
+
* Both change every engine client of Cube's host, from the next request.
|
|
30
|
+
*/
|
|
31
|
+
export class CubeDevSettingsState {
|
|
32
|
+
private readonly host: CubeHost;
|
|
33
|
+
private readonly settings: CubeEngineClientSettings | undefined;
|
|
34
|
+
isOpen = false;
|
|
35
|
+
requestCompression: boolean;
|
|
36
|
+
/** The engine URL as typed: it is used once it is a URL */
|
|
37
|
+
baseUrlText: string;
|
|
38
|
+
|
|
39
|
+
constructor(host: CubeHost) {
|
|
40
|
+
makeObservable<CubeDevSettingsState, 'host' | 'settings'>(this, {
|
|
41
|
+
host: false,
|
|
42
|
+
settings: false,
|
|
43
|
+
isOpen: observable,
|
|
44
|
+
requestCompression: observable,
|
|
45
|
+
baseUrlText: observable,
|
|
46
|
+
baseUrlError: computed,
|
|
47
|
+
open: action,
|
|
48
|
+
close: action,
|
|
49
|
+
setRequestCompression: action,
|
|
50
|
+
setBaseUrlText: action,
|
|
51
|
+
resetBaseUrl: action,
|
|
52
|
+
});
|
|
53
|
+
this.host = host;
|
|
54
|
+
this.settings = host.engineClientSettings;
|
|
55
|
+
const uncompressed =
|
|
56
|
+
host.applicationStore.userDataService.getBooleanValue(
|
|
57
|
+
LEGEND_CUBE_USER_DATA_KEY.UNCOMPRESSED_REQUESTS,
|
|
58
|
+
) ?? false;
|
|
59
|
+
if (uncompressed) {
|
|
60
|
+
this.settings?.setRequestCompression(false);
|
|
61
|
+
}
|
|
62
|
+
this.requestCompression = this.settings?.requestCompression ?? true;
|
|
63
|
+
this.baseUrlText = this.settings?.baseUrl ?? '';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Whether the host lets Dev Settings change its engine clients */
|
|
67
|
+
get isAvailable(): boolean {
|
|
68
|
+
return this.settings !== undefined;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** The URL the host configured */
|
|
72
|
+
get defaultBaseUrl(): string | undefined {
|
|
73
|
+
return this.settings?.defaultBaseUrl;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Why the typed engine URL isn't used, if it isn't */
|
|
77
|
+
get baseUrlError(): string | undefined {
|
|
78
|
+
return isValidUrl(this.baseUrlText) ? undefined : 'Invalid URL';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
open(): void {
|
|
82
|
+
this.isOpen = true;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
close(): void {
|
|
86
|
+
this.isOpen = false;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
setRequestCompression(compressed: boolean): void {
|
|
90
|
+
if (!this.settings) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.requestCompression = compressed;
|
|
94
|
+
this.settings.setRequestCompression(compressed);
|
|
95
|
+
this.host.applicationStore.userDataService.persistValue(
|
|
96
|
+
LEGEND_CUBE_USER_DATA_KEY.UNCOMPRESSED_REQUESTS,
|
|
97
|
+
!compressed,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Takes the typed engine URL, and uses it once it is a URL */
|
|
102
|
+
setBaseUrlText(text: string): void {
|
|
103
|
+
this.baseUrlText = text;
|
|
104
|
+
if (this.settings && isValidUrl(text)) {
|
|
105
|
+
this.settings.setBaseUrl(text);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Goes back to the engine URL the host configured */
|
|
110
|
+
resetBaseUrl(): void {
|
|
111
|
+
if (!this.settings) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
this.settings.setBaseUrl(this.settings.defaultBaseUrl);
|
|
115
|
+
this.baseUrlText = this.settings.defaultBaseUrl ?? '';
|
|
116
|
+
}
|
|
117
|
+
}
|