@finos/legend-cube-builder 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -1
- package/docs/adding-an-operation.md +181 -0
- package/docs/hosting.md +157 -0
- package/docs/testing.md +188 -0
- package/lib/__lib__/LegendCubeCommand.d.ts +2 -1
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeCommand.js +5 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -1
- package/lib/__lib__/LegendCubeDataProductLabels.d.ts +45 -0
- package/lib/__lib__/LegendCubeDataProductLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeDataProductLabels.js +60 -0
- package/lib/__lib__/LegendCubeDataProductLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts +56 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.js +76 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeHelpText.js +21 -3
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
- package/lib/__lib__/LegendCubeIngestLabels.d.ts +25 -0
- package/lib/__lib__/LegendCubeIngestLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeIngestLabels.js +29 -0
- package/lib/__lib__/LegendCubeIngestLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeLabels.d.ts +95 -3
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +121 -4
- package/lib/__lib__/LegendCubeLabels.js.map +1 -1
- package/lib/__lib__/LegendCubeProjectLabels.d.ts +22 -0
- package/lib/__lib__/LegendCubeProjectLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectLabels.js +23 -0
- package/lib/__lib__/LegendCubeProjectLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeTesting.js +1 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.js +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeConnectionTestSupport.d.ts +22 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.d.ts.map +1 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.js +30 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.js.map +1 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts +31 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts.map +1 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.js +63 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +18 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +51 -0
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +37 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.js +83 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +67 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.js +138 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts +12 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.js +25 -1
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts +5 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.js +9 -1
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
- package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts +33 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.js +67 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.js.map +1 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts +45 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.js +137 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +2 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.js +21 -2
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +35 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js +107 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts +30 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.js +64 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.js.map +1 -0
- package/lib/components/CubeAddItems.d.ts +35 -0
- package/lib/components/CubeAddItems.d.ts.map +1 -0
- package/lib/components/CubeAddItems.js +82 -0
- package/lib/components/CubeAddItems.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +5 -1
- package/lib/components/CubeEditor.d.ts.map +1 -1
- package/lib/components/CubeEditor.js +33 -13
- package/lib/components/CubeEditor.js.map +1 -1
- package/lib/components/CubeEntrySourceBanner.d.ts +23 -0
- package/lib/components/CubeEntrySourceBanner.d.ts.map +1 -0
- package/lib/components/CubeEntrySourceBanner.js +32 -0
- package/lib/components/CubeEntrySourceBanner.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -1
- package/lib/components/CubeNodeIcon.js +19 -2
- package/lib/components/CubeNodeIcon.js.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.d.ts +21 -0
- package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -0
- package/lib/components/CubeSchemaColumnsTable.js +6 -0
- package/lib/components/CubeSchemaColumnsTable.js.map +1 -0
- package/lib/components/canvas/CubeCanvas.d.ts +4 -3
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvas.js +33 -12
- package/lib/components/canvas/CubeCanvas.js.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts +8 -4
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js +19 -9
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
- package/lib/components/canvas/CubeCanvasDnd.d.ts +7 -5
- package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasDnd.js +14 -9
- package/lib/components/canvas/CubeCanvasDnd.js.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts +2 -0
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +8 -4
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.js +30 -17
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
- package/lib/components/canvas/CubeCanvasNodeFocus.d.ts +22 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.js +31 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.js.map +1 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.d.ts +44 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.d.ts.map +1 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.js +51 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.js.map +1 -0
- package/lib/components/editors/CubeAggregationRowEditor.d.ts +48 -0
- package/lib/components/editors/CubeAggregationRowEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeAggregationRowEditor.js +72 -0
- package/lib/components/editors/CubeAggregationRowEditor.js.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts +42 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.js +41 -0
- package/lib/components/editors/CubeColumnChecklist.js.map +1 -0
- package/lib/components/editors/CubeColumnPicker.d.ts +9 -2
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnPicker.js +9 -4
- package/lib/components/editors/CubeColumnPicker.js.map +1 -1
- package/lib/components/editors/CubeConcatEditor.d.ts +33 -0
- package/lib/components/editors/CubeConcatEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeConcatEditor.js +147 -0
- package/lib/components/editors/CubeConcatEditor.js.map +1 -0
- package/lib/components/editors/CubeDataProductSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeDataProductSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDataProductSourceEditor.js +53 -0
- package/lib/components/editors/CubeDataProductSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeDifferenceEditor.d.ts +25 -0
- package/lib/components/editors/CubeDifferenceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDifferenceEditor.js +29 -0
- package/lib/components/editors/CubeDifferenceEditor.js.map +1 -0
- package/lib/components/editors/CubeDistinctEditor.d.ts +23 -0
- package/lib/components/editors/CubeDistinctEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDistinctEditor.js +24 -0
- package/lib/components/editors/CubeDistinctEditor.js.map +1 -0
- package/lib/components/editors/CubeExtendEditor.d.ts +25 -0
- package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExtendEditor.js +86 -0
- package/lib/components/editors/CubeExtendEditor.js.map +1 -0
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeFilterEditor.js +3 -3
- package/lib/components/editors/CubeFilterEditor.js.map +1 -1
- package/lib/components/editors/CubeGroupEditor.d.ts +28 -0
- package/lib/components/editors/CubeGroupEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeGroupEditor.js +70 -0
- package/lib/components/editors/CubeGroupEditor.js.map +1 -0
- package/lib/components/editors/CubeIngestSourceEditor.d.ts +26 -0
- package/lib/components/editors/CubeIngestSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeIngestSourceEditor.js +47 -0
- package/lib/components/editors/CubeIngestSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeIntegerField.d.ts +29 -0
- package/lib/components/editors/CubeIntegerField.d.ts.map +1 -0
- package/lib/components/editors/CubeIntegerField.js +30 -0
- package/lib/components/editors/CubeIntegerField.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts +2 -4
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +15 -37
- package/lib/components/editors/CubeJoinEditor.js.map +1 -1
- package/lib/components/editors/CubeJoinKeyRows.d.ts +34 -0
- package/lib/components/editors/CubeJoinKeyRows.d.ts.map +1 -0
- package/lib/components/editors/CubeJoinKeyRows.js +65 -0
- package/lib/components/editors/CubeJoinKeyRows.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts +7 -5
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.js +53 -14
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts +40 -0
- package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorPopper.js +125 -0
- package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js +28 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
- package/lib/components/editors/CubePartitionEditor.d.ts +30 -0
- package/lib/components/editors/CubePartitionEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePartitionEditor.js +93 -0
- package/lib/components/editors/CubePartitionEditor.js.map +1 -0
- package/lib/components/editors/CubeRenameEditor.d.ts +26 -0
- package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeRenameEditor.js +60 -0
- package/lib/components/editors/CubeRenameEditor.js.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts +26 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.js +23 -0
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -0
- package/lib/components/editors/CubeRowCountEditor.d.ts +25 -0
- package/lib/components/editors/CubeRowCountEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeRowCountEditor.js +38 -0
- package/lib/components/editors/CubeRowCountEditor.js.map +1 -0
- package/lib/components/editors/CubeSliceEditor.d.ts +25 -0
- package/lib/components/editors/CubeSliceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSliceEditor.js +40 -0
- package/lib/components/editors/CubeSliceEditor.js.map +1 -0
- package/lib/components/editors/CubeSortEditor.d.ts +27 -0
- package/lib/components/editors/CubeSortEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSortEditor.js +45 -0
- package/lib/components/editors/CubeSortEditor.js.map +1 -0
- package/lib/components/editors/CubeSortRowEditor.d.ts +47 -0
- package/lib/components/editors/CubeSortRowEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSortRowEditor.js +62 -0
- package/lib/components/editors/CubeSortRowEditor.js.map +1 -0
- package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeSourceEditor.js +18 -6
- package/lib/components/editors/CubeSourceEditor.js.map +1 -1
- package/lib/components/editors/CubeValueEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeValueEditor.js +2 -1
- package/lib/components/editors/CubeValueEditor.js.map +1 -1
- package/lib/components/editors/CubeWarehouseControl.d.ts +30 -0
- package/lib/components/editors/CubeWarehouseControl.d.ts.map +1 -0
- package/lib/components/editors/CubeWarehouseControl.js +44 -0
- package/lib/components/editors/CubeWarehouseControl.js.map +1 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.d.ts +31 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.d.ts.map +1 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.js +83 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.js.map +1 -0
- package/lib/components/examples/CubeExamplesDialog.d.ts +26 -0
- package/lib/components/examples/CubeExamplesDialog.d.ts.map +1 -0
- package/lib/components/examples/CubeExamplesDialog.js +68 -0
- package/lib/components/examples/CubeExamplesDialog.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
- package/lib/components/grid/CubeGridRegion.js +20 -9
- package/lib/components/grid/CubeGridRegion.js.map +1 -1
- package/lib/components/grid/CubeGridValues.d.ts +16 -0
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
- package/lib/components/grid/CubeGridValues.js +44 -0
- package/lib/components/grid/CubeGridValues.js.map +1 -1
- package/lib/components/grid/CubeResultGrid.d.ts +14 -1
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +55 -7
- package/lib/components/grid/CubeResultGrid.js.map +1 -1
- package/lib/components/palette/CubePalette.d.ts.map +1 -1
- package/lib/components/palette/CubePalette.js +23 -12
- package/lib/components/palette/CubePalette.js.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.d.ts +27 -0
- package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeDataProductTab.js +102 -0
- package/lib/components/source-picker/CubeDataProductTab.js.map +1 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts +27 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.js +87 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts +28 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.js +66 -0
- package/lib/components/source-picker/CubeIngestTab.js.map +1 -0
- package/lib/components/source-picker/CubeInlineModelTab.d.ts +37 -0
- package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeInlineModelTab.js +71 -0
- package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -0
- package/lib/components/source-picker/CubePickerStep.d.ts +27 -0
- package/lib/components/source-picker/CubePickerStep.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerStep.js +23 -0
- package/lib/components/source-picker/CubePickerStep.js.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts +27 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.js +50 -0
- package/lib/components/source-picker/CubeProjectTab.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts +6 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
- package/lib/components/source-picker/CubeSourcePicker.js +20 -58
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
- package/lib/graph-manager/CubeConnectionExplorer.d.ts +90 -0
- package/lib/graph-manager/CubeConnectionExplorer.d.ts.map +1 -0
- package/lib/graph-manager/CubeConnectionExplorer.js +34 -0
- package/lib/graph-manager/CubeConnectionExplorer.js.map +1 -0
- package/lib/graph-manager/CubeDataProduct.d.ts +66 -0
- package/lib/graph-manager/CubeDataProduct.d.ts.map +1 -0
- package/lib/graph-manager/CubeDataProduct.js +102 -0
- package/lib/graph-manager/CubeDataProduct.js.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts +167 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.js +116 -0
- package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -0
- package/lib/graph-manager/CubeDirectConnection.d.ts +38 -0
- package/lib/graph-manager/CubeDirectConnection.d.ts.map +1 -0
- package/lib/graph-manager/CubeDirectConnection.js +48 -0
- package/lib/graph-manager/CubeDirectConnection.js.map +1 -0
- package/lib/graph-manager/CubeEngine.d.ts +50 -2
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/CubeEngine.js +4 -1
- package/lib/graph-manager/CubeEngine.js.map +1 -1
- package/lib/graph-manager/CubeIngest.d.ts +50 -0
- package/lib/graph-manager/CubeIngest.d.ts.map +1 -0
- package/lib/graph-manager/CubeIngest.js +88 -0
- package/lib/graph-manager/CubeIngest.js.map +1 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts +116 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeIngestCatalog.js +80 -0
- package/lib/graph-manager/CubeIngestCatalog.js.map +1 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.d.ts +26 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.js +17 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.js.map +1 -0
- package/lib/graph-manager/CubeModelOutlineHelper.d.ts +8 -0
- package/lib/graph-manager/CubeModelOutlineHelper.d.ts.map +1 -1
- package/lib/graph-manager/CubeModelOutlineHelper.js +21 -0
- package/lib/graph-manager/CubeModelOutlineHelper.js.map +1 -1
- package/lib/graph-manager/CubeProject.d.ts +41 -0
- package/lib/graph-manager/CubeProject.d.ts.map +1 -0
- package/lib/graph-manager/CubeProject.js +84 -0
- package/lib/graph-manager/CubeProject.js.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts +35 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.js +17 -0
- package/lib/graph-manager/CubeProjectCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +63 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +50 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts +44 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js +192 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +29 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +84 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts +41 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js +246 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts +43 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js +112 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +30 -4
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts +23 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js +68 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +140 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +62 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +119 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts +33 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js +94 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.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 +63 -4
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +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 +56 -3
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts +67 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js +238 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +34 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +64 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts +104 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js +484 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +97 -3
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +585 -20
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js +270 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts +35 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +91 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts +25 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js +47 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts +28 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js +310 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts +33 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js +188 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +1 -1
- 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 +30 -4
- 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 +11 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -1
- package/lib/index.js.map +1 -1
- package/lib/stores/CubeAddPlacement.d.ts +32 -0
- package/lib/stores/CubeAddPlacement.d.ts.map +1 -0
- package/lib/stores/CubeAddPlacement.js +40 -0
- package/lib/stores/CubeAddPlacement.js.map +1 -0
- package/lib/stores/CubeDataProductRecheck.d.ts +27 -0
- package/lib/stores/CubeDataProductRecheck.d.ts.map +1 -0
- package/lib/stores/CubeDataProductRecheck.js +54 -0
- package/lib/stores/CubeDataProductRecheck.js.map +1 -0
- package/lib/stores/CubeDataProductRuntimeState.d.ts +88 -0
- package/lib/stores/CubeDataProductRuntimeState.d.ts.map +1 -0
- package/lib/stores/CubeDataProductRuntimeState.js +190 -0
- package/lib/stores/CubeDataProductRuntimeState.js.map +1 -0
- package/lib/stores/CubeDataProductWarehouse.d.ts +19 -0
- package/lib/stores/CubeDataProductWarehouse.d.ts.map +1 -0
- package/lib/stores/CubeDataProductWarehouse.js +25 -0
- package/lib/stores/CubeDataProductWarehouse.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +133 -19
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +433 -52
- package/lib/stores/CubeEditorState.js.map +1 -1
- package/lib/stores/CubeEntrySource.d.ts +78 -0
- package/lib/stores/CubeEntrySource.d.ts.map +1 -0
- package/lib/stores/CubeEntrySource.js +200 -0
- package/lib/stores/CubeEntrySource.js.map +1 -0
- package/lib/stores/CubeExamples.d.ts +43 -0
- package/lib/stores/CubeExamples.d.ts.map +1 -0
- package/lib/stores/CubeExamples.js +296 -0
- package/lib/stores/CubeExamples.js.map +1 -0
- package/lib/stores/CubeExamplesState.d.ts +45 -0
- package/lib/stores/CubeExamplesState.d.ts.map +1 -0
- package/lib/stores/CubeExamplesState.js +81 -0
- package/lib/stores/CubeExamplesState.js.map +1 -0
- package/lib/stores/CubeExecutionState.d.ts +6 -2
- package/lib/stores/CubeExecutionState.d.ts.map +1 -1
- package/lib/stores/CubeExecutionState.js +34 -8
- package/lib/stores/CubeExecutionState.js.map +1 -1
- package/lib/stores/CubeExtendTyping.d.ts +72 -0
- package/lib/stores/CubeExtendTyping.d.ts.map +1 -0
- package/lib/stores/CubeExtendTyping.js +176 -0
- package/lib/stores/CubeExtendTyping.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +48 -0
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -0
- package/lib/stores/CubeGridQuickActions.js +124 -0
- package/lib/stores/CubeGridQuickActions.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +32 -1
- package/lib/stores/CubeHost.d.ts.map +1 -1
- package/lib/stores/CubeHost.js +21 -1
- package/lib/stores/CubeHost.js.map +1 -1
- package/lib/stores/CubeIngestRecheck.d.ts +26 -0
- package/lib/stores/CubeIngestRecheck.d.ts.map +1 -0
- package/lib/stores/CubeIngestRecheck.js +53 -0
- package/lib/stores/CubeIngestRecheck.js.map +1 -0
- package/lib/stores/CubeNodeEditorState.d.ts +120 -6
- package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeNodeEditorState.js +275 -9
- package/lib/stores/CubeNodeEditorState.js.map +1 -1
- package/lib/stores/CubeShowPureState.d.ts +9 -3
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +28 -8
- package/lib/stores/CubeShowPureState.js.map +1 -1
- package/lib/stores/CubeSourcePickerState.d.ts +54 -65
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
- package/lib/stores/CubeSourcePickerState.js +155 -276
- package/lib/stores/CubeSourcePickerState.js.map +1 -1
- package/lib/stores/CubeSpecTransferState.d.ts +2 -2
- package/lib/stores/CubeSpecTransferState.js +2 -2
- package/lib/stores/LocalModelCatalog.d.ts +2 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
- package/lib/stores/LocalModelCatalog.js +17 -3
- package/lib/stores/LocalModelCatalog.js.map +1 -1
- package/lib/stores/editors/CubeAggregationRows.d.ts +80 -0
- package/lib/stores/editors/CubeAggregationRows.d.ts.map +1 -0
- package/lib/stores/editors/CubeAggregationRows.js +164 -0
- package/lib/stores/editors/CubeAggregationRows.js.map +1 -0
- package/lib/stores/editors/CubeConcatDraft.d.ts +30 -0
- package/lib/stores/editors/CubeConcatDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeConcatDraft.js +44 -0
- package/lib/stores/editors/CubeConcatDraft.js.map +1 -0
- package/lib/stores/editors/CubeDifferenceDraft.d.ts +49 -0
- package/lib/stores/editors/CubeDifferenceDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeDifferenceDraft.js +111 -0
- package/lib/stores/editors/CubeDifferenceDraft.js.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts +110 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.js +359 -0
- package/lib/stores/editors/CubeExtendDraft.js.map +1 -0
- package/lib/stores/editors/CubeGroupDraft.d.ts +61 -0
- package/lib/stores/editors/CubeGroupDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeGroupDraft.js +106 -0
- package/lib/stores/editors/CubeGroupDraft.js.map +1 -0
- package/lib/stores/editors/CubeIntegerText.d.ts +24 -0
- package/lib/stores/editors/CubeIntegerText.d.ts.map +1 -0
- package/lib/stores/editors/CubeIntegerText.js +33 -0
- package/lib/stores/editors/CubeIntegerText.js.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts +20 -13
- package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeJoinDraft.js +109 -29
- package/lib/stores/editors/CubeJoinDraft.js.map +1 -1
- package/lib/stores/editors/CubeJoinKeyPairs.d.ts +38 -0
- package/lib/stores/editors/CubeJoinKeyPairs.d.ts.map +1 -0
- package/lib/stores/editors/CubeJoinKeyPairs.js +33 -0
- package/lib/stores/editors/CubeJoinKeyPairs.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts +20 -6
- package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraft.js +23 -5
- package/lib/stores/editors/CubeNodeDraft.js.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +6 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +42 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
- package/lib/stores/editors/CubePartitionDraft.d.ts +70 -0
- package/lib/stores/editors/CubePartitionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePartitionDraft.js +154 -0
- package/lib/stores/editors/CubePartitionDraft.js.map +1 -0
- package/lib/stores/editors/CubeRenameDraft.d.ts +44 -0
- package/lib/stores/editors/CubeRenameDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeRenameDraft.js +79 -0
- package/lib/stores/editors/CubeRenameDraft.js.map +1 -0
- package/lib/stores/editors/CubeRestrictDraft.d.ts +37 -0
- package/lib/stores/editors/CubeRestrictDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeRestrictDraft.js +73 -0
- package/lib/stores/editors/CubeRestrictDraft.js.map +1 -0
- package/lib/stores/editors/CubeRowCountDraft.d.ts +42 -0
- package/lib/stores/editors/CubeRowCountDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeRowCountDraft.js +55 -0
- package/lib/stores/editors/CubeRowCountDraft.js.map +1 -0
- package/lib/stores/editors/CubeSliceDraft.d.ts +42 -0
- package/lib/stores/editors/CubeSliceDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeSliceDraft.js +72 -0
- package/lib/stores/editors/CubeSliceDraft.js.map +1 -0
- package/lib/stores/editors/CubeSortDraft.d.ts +41 -0
- package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeSortDraft.js +73 -0
- package/lib/stores/editors/CubeSortDraft.js.map +1 -0
- package/lib/stores/editors/CubeSortRows.d.ts +34 -0
- package/lib/stores/editors/CubeSortRows.d.ts.map +1 -0
- package/lib/stores/editors/CubeSortRows.js +50 -0
- package/lib/stores/editors/CubeSortRows.js.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts +7 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -1
- package/lib/stores/fixtures/CubeNorthwindModel.js +99 -87
- package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -1
- package/lib/stores/fixtures/CubeSampleSql.d.ts +34 -0
- package/lib/stores/fixtures/CubeSampleSql.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSampleSql.js +64 -0
- package/lib/stores/fixtures/CubeSampleSql.js.map +1 -0
- package/lib/stores/fixtures/CubeSportsModel.d.ts +27 -0
- package/lib/stores/fixtures/CubeSportsModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSportsModel.js +158 -0
- package/lib/stores/fixtures/CubeSportsModel.js.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts +29 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.js +197 -0
- package/lib/stores/fixtures/CubeTradesModel.js.map +1 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.d.ts +71 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.js +392 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.js.map +1 -0
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts +186 -0
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeDataProductTabState.js +681 -0
- package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +140 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js +516 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeIngestTabState.d.ts +114 -0
- package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeIngestTabState.js +455 -0
- package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +107 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.js +347 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeProjectTabState.d.ts +62 -0
- package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeProjectTabState.js +181 -0
- package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +48 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js +24 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -0
- package/package.json +12 -8
- package/src/__lib__/LegendCubeCommand.ts +5 -0
- package/src/__lib__/LegendCubeDataProductLabels.ts +91 -0
- package/src/__lib__/LegendCubeDirectConnectionLabels.ts +111 -0
- package/src/__lib__/LegendCubeHelpText.ts +46 -2
- package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
- package/src/__lib__/LegendCubeLabels.ts +192 -4
- package/src/__lib__/LegendCubeProjectLabels.ts +25 -0
- package/src/__lib__/LegendCubeTesting.ts +1 -0
- package/src/__test-utils__/CubeCanvasTestUtils.ts +1 -1
- package/src/__test-utils__/CubeConnectionTestSupport.ts +45 -0
- package/src/__test-utils__/CubeDirectConnectionFixtures.ts +70 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +73 -0
- package/src/__test-utils__/CubeExpressionTestUtils.ts +119 -0
- package/src/__test-utils__/CubeOperationsTestUtils.ts +252 -0
- package/src/__test-utils__/CubePageTestUtils.tsx +35 -0
- package/src/__test-utils__/CubeTestApplication.ts +21 -2
- package/src/__test-utils__/FakeCubeConnectionExplorer.ts +111 -0
- package/src/__test-utils__/FakeCubeDataProductCatalog.ts +227 -0
- package/src/__test-utils__/FakeCubeEngine.ts +32 -2
- package/src/__test-utils__/FakeCubeIngestCatalog.ts +180 -0
- package/src/__test-utils__/FakeCubeProjectCatalog.ts +89 -0
- package/src/components/CubeAddItems.tsx +179 -0
- package/src/components/CubeEditor.tsx +73 -44
- package/src/components/CubeEntrySourceBanner.tsx +64 -0
- package/src/components/CubeNodeIcon.tsx +31 -1
- package/src/components/CubeSchemaColumnsTable.tsx +49 -0
- package/src/components/canvas/CubeCanvas.tsx +51 -14
- package/src/components/canvas/CubeCanvasContextMenu.tsx +31 -30
- package/src/components/canvas/CubeCanvasDnd.ts +16 -9
- package/src/components/canvas/CubeCanvasElements.ts +12 -3
- package/src/components/canvas/CubeCanvasNode.tsx +62 -36
- package/src/components/canvas/CubeCanvasNodeFocus.ts +37 -0
- package/src/components/canvas/CubeNodeEditorAnchor.ts +82 -0
- package/src/components/editors/CubeAggregationRowEditor.tsx +224 -0
- package/src/components/editors/CubeColumnChecklist.tsx +130 -0
- package/src/components/editors/CubeColumnPicker.tsx +36 -12
- package/src/components/editors/CubeConcatEditor.tsx +374 -0
- package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
- package/src/components/editors/CubeDifferenceEditor.tsx +87 -0
- package/src/components/editors/CubeDistinctEditor.tsx +28 -0
- package/src/components/editors/CubeExtendEditor.tsx +271 -0
- package/src/components/editors/CubeFilterEditor.tsx +7 -0
- package/src/components/editors/CubeGroupEditor.tsx +135 -0
- package/src/components/editors/CubeIngestSourceEditor.tsx +104 -0
- package/src/components/editors/CubeIntegerField.tsx +51 -0
- package/src/components/editors/CubeJoinEditor.tsx +34 -131
- package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +103 -29
- package/src/components/editors/CubeNodeEditorPopper.tsx +183 -0
- package/src/components/editors/CubeNodeEditorRegistry.ts +41 -0
- package/src/components/editors/CubePartitionEditor.tsx +208 -0
- package/src/components/editors/CubeRenameEditor.tsx +148 -0
- package/src/components/editors/CubeRestrictEditor.tsx +103 -0
- package/src/components/editors/CubeRowCountEditor.tsx +53 -0
- package/src/components/editors/CubeSliceEditor.tsx +69 -0
- package/src/components/editors/CubeSortEditor.tsx +84 -0
- package/src/components/editors/CubeSortRowEditor.tsx +176 -0
- package/src/components/editors/CubeSourceEditor.tsx +42 -40
- package/src/components/editors/CubeValueEditor.tsx +2 -1
- package/src/components/editors/CubeWarehouseControl.tsx +113 -0
- package/src/components/editors/useCubeNodeEditorDismiss.ts +103 -0
- package/src/components/examples/CubeExamplesDialog.tsx +199 -0
- package/src/components/grid/CubeGridRegion.tsx +49 -10
- package/src/components/grid/CubeGridValues.ts +55 -0
- package/src/components/grid/CubeResultGrid.tsx +83 -13
- package/src/components/palette/CubePalette.tsx +33 -15
- package/src/components/source-picker/CubeDataProductTab.tsx +392 -0
- package/src/components/source-picker/CubeDirectConnectionTab.tsx +340 -0
- package/src/components/source-picker/CubeIngestTab.tsx +232 -0
- package/src/components/source-picker/CubeInlineModelTab.tsx +191 -0
- package/src/components/source-picker/CubePickerStep.tsx +49 -0
- package/src/components/source-picker/CubeProjectTab.tsx +114 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +62 -227
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +1 -1
- package/src/graph-manager/CubeConnectionExplorer.ts +106 -0
- package/src/graph-manager/CubeDataProduct.ts +150 -0
- package/src/graph-manager/CubeDataProductCatalog.ts +245 -0
- package/src/graph-manager/CubeDirectConnection.ts +67 -0
- package/src/graph-manager/CubeEngine.ts +57 -1
- package/src/graph-manager/CubeIngest.ts +144 -0
- package/src/graph-manager/CubeIngestCatalog.ts +169 -0
- package/src/graph-manager/CubeLakehouseEnvironment.ts +27 -0
- package/src/graph-manager/CubeModelOutlineHelper.ts +26 -0
- package/src/graph-manager/CubeProject.ts +117 -0
- package/src/graph-manager/CubeProjectCatalog.ts +40 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +145 -1
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.ts +251 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +101 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.ts +339 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDirectModel.ts +151 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +45 -4
- package/src/graph-manager/protocol/pure/v1/V1_CubeExpression.ts +89 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +201 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +183 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.ts +141 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +84 -4
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +89 -3
- package/src/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.ts +361 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +116 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts +744 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +967 -24
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.ts +459 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +147 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.ts +61 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.ts +337 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.ts +206 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +48 -4
- package/src/index.ts +20 -0
- package/src/stores/CubeAddPlacement.ts +67 -0
- package/src/stores/CubeDataProductRecheck.ts +93 -0
- package/src/stores/CubeDataProductRuntimeState.ts +256 -0
- package/src/stores/CubeDataProductWarehouse.ts +40 -0
- package/src/stores/CubeEditorState.ts +621 -68
- package/src/stores/CubeEntrySource.ts +278 -0
- package/src/stores/CubeExamples.ts +457 -0
- package/src/stores/CubeExamplesState.ts +108 -0
- package/src/stores/CubeExecutionState.ts +60 -8
- package/src/stores/CubeExtendTyping.ts +291 -0
- package/src/stores/CubeGridQuickActions.ts +184 -0
- package/src/stores/CubeHost.ts +71 -1
- package/src/stores/CubeIngestRecheck.ts +92 -0
- package/src/stores/CubeNodeEditorState.ts +348 -10
- package/src/stores/CubeShowPureState.ts +33 -8
- package/src/stores/CubeSourcePickerState.ts +160 -330
- package/src/stores/CubeSpecTransferState.ts +2 -2
- package/src/stores/LocalModelCatalog.ts +22 -3
- package/src/stores/editors/CubeAggregationRows.ts +299 -0
- package/src/stores/editors/CubeConcatDraft.ts +49 -0
- package/src/stores/editors/CubeDifferenceDraft.ts +147 -0
- package/src/stores/editors/CubeExtendDraft.ts +532 -0
- package/src/stores/editors/CubeGroupDraft.ts +145 -0
- package/src/stores/editors/CubeIntegerText.ts +34 -0
- package/src/stores/editors/CubeJoinDraft.ts +170 -54
- package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
- package/src/stores/editors/CubeNodeDraft.ts +26 -6
- package/src/stores/editors/CubeNodeDraftRegistry.ts +60 -1
- package/src/stores/editors/CubePartitionDraft.ts +214 -0
- package/src/stores/editors/CubeRenameDraft.ts +110 -0
- package/src/stores/editors/CubeRestrictDraft.ts +83 -0
- package/src/stores/editors/CubeRowCountDraft.ts +69 -0
- package/src/stores/editors/CubeSliceDraft.ts +87 -0
- package/src/stores/editors/CubeSortDraft.ts +98 -0
- package/src/stores/editors/CubeSortRows.ts +84 -0
- package/src/stores/fixtures/CubeNorthwindModel.ts +103 -88
- package/src/stores/fixtures/CubeSampleSql.ts +85 -0
- package/src/stores/fixtures/CubeSportsModel.ts +182 -0
- package/src/stores/fixtures/CubeTradesModel.ts +241 -0
- package/src/stores/source-picker/CubeCsvSetupSql.ts +444 -0
- package/src/stores/source-picker/CubeDataProductTabState.ts +839 -0
- package/src/stores/source-picker/CubeDirectConnectionTabState.ts +647 -0
- package/src/stores/source-picker/CubeIngestTabState.ts +551 -0
- package/src/stores/source-picker/CubeInlineModelTabState.ts +448 -0
- package/src/stores/source-picker/CubeProjectTabState.ts +218 -0
- package/src/stores/source-picker/CubeSourcePickerTab.ts +50 -0
- package/tsconfig.json +104 -0
|
@@ -52,7 +52,7 @@ export const CubeSpecTransferDialog = observer(
|
|
|
52
52
|
<Modal darkMode={darkMode} className="w-[720px] max-w-full">
|
|
53
53
|
<ModalHeader>
|
|
54
54
|
<div className="modal__title">
|
|
55
|
-
{isExport ? 'Export spec
|
|
55
|
+
{isExport ? 'Export spec' : 'Import spec'}
|
|
56
56
|
</div>
|
|
57
57
|
</ModalHeader>
|
|
58
58
|
<PanelLoadingIndicator isLoading={transfer.isReadingFile} />
|
|
@@ -0,0 +1,106 @@
|
|
|
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 type { PlainObject } from '@finos/legend-shared';
|
|
18
|
+
import type { CubeTableFlag } from './CubeEngine.js';
|
|
19
|
+
|
|
20
|
+
// Direct connections (PLAN §6.8), in Cube's own terms: what the connection
|
|
21
|
+
// form gives, what the page shows of a saved connection, and what reading its
|
|
22
|
+
// database finds. The connection itself stays opaque JSON outside
|
|
23
|
+
// `protocol/pure/v1/`, which alone reads it
|
|
24
|
+
|
|
25
|
+
/** The databases a direct connection can reach this round */
|
|
26
|
+
export enum CubeDirectDatabaseType {
|
|
27
|
+
H2 = 'H2',
|
|
28
|
+
DUCKDB = 'DuckDB',
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** What the connection form gives, before it becomes a connection */
|
|
32
|
+
export interface CubeConnectionDraft {
|
|
33
|
+
databaseType: CubeDirectDatabaseType;
|
|
34
|
+
/** Statements the engine runs on each connection, e.g. to create test tables */
|
|
35
|
+
setupSqls: readonly string[];
|
|
36
|
+
/** DuckDB only: a database file on the engine's host, or '' for an in-memory database */
|
|
37
|
+
path?: string | undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** How a database is reached, as the page shows it */
|
|
41
|
+
export enum CubeConnectionDatasourceKind {
|
|
42
|
+
/** An H2 database the engine creates in its own H2 server */
|
|
43
|
+
LOCAL_H2 = 'LOCAL_H2',
|
|
44
|
+
DUCKDB_IN_MEMORY = 'DUCKDB_IN_MEMORY',
|
|
45
|
+
DUCKDB_FILE = 'DUCKDB_FILE',
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** What the page shows of a saved connection: never its setup SQL */
|
|
49
|
+
export interface CubeConnectionSummary {
|
|
50
|
+
databaseType: CubeDirectDatabaseType;
|
|
51
|
+
datasourceKind: CubeConnectionDatasourceKind;
|
|
52
|
+
/** The DuckDB file, for a DuckDB file database */
|
|
53
|
+
path?: string | undefined;
|
|
54
|
+
setupSqlCount: number;
|
|
55
|
+
/** The authentication strategy, as the engine names it */
|
|
56
|
+
authenticationKind: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** A table read from a connection's database, for the picker */
|
|
60
|
+
export interface CubeExploredTable {
|
|
61
|
+
/** As the database stores it, e.g. `ORDER.LINES` */
|
|
62
|
+
name: string;
|
|
63
|
+
/** As a table's coordinates store it: always quoted, e.g. `"ORDER.LINES"` */
|
|
64
|
+
storedName: string;
|
|
65
|
+
/** The columns Cube can use */
|
|
66
|
+
columnCount: number;
|
|
67
|
+
/** The columns left out because the engine can't type them; Cube shows how many */
|
|
68
|
+
hiddenColumnCount: number;
|
|
69
|
+
flags: readonly CubeTableFlag[];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* A direct connection as a cube saves it: protocol JSON, which only the
|
|
74
|
+
* engine's implementation reads
|
|
75
|
+
*/
|
|
76
|
+
export type CubeDirectConnection = PlainObject;
|
|
77
|
+
|
|
78
|
+
/** What the page knows of a connection without calling the engine */
|
|
79
|
+
export type CubeConnectionDescription =
|
|
80
|
+
| { supported: true; summary: CubeConnectionSummary }
|
|
81
|
+
/** Why Cube can't use the connection, in words a user can act on */
|
|
82
|
+
| { supported: false; problems: readonly string[] };
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Reading a direct connection's database (PLAN §6.8), for the picker: its own
|
|
86
|
+
* port, beside the `CubeEngine`, so hosts without direct connections need
|
|
87
|
+
* neither. Calls fail with a `CubeEngineError`, with no node
|
|
88
|
+
*/
|
|
89
|
+
export interface CubeConnectionExplorer {
|
|
90
|
+
/** The connection the connection form describes */
|
|
91
|
+
buildConnection(draft: CubeConnectionDraft): CubeDirectConnection;
|
|
92
|
+
|
|
93
|
+
/** Whether Cube can use a connection, and what the page shows of it: no engine call */
|
|
94
|
+
describeConnection(
|
|
95
|
+
connection: CubeDirectConnection,
|
|
96
|
+
): CubeConnectionDescription;
|
|
97
|
+
|
|
98
|
+
/** The schemas of the connection's database, without the database's own; tests the connection */
|
|
99
|
+
listSchemas(connection: CubeDirectConnection): Promise<readonly string[]>;
|
|
100
|
+
|
|
101
|
+
/** A schema's tables and views, with how many columns Cube can use and hides */
|
|
102
|
+
listTables(
|
|
103
|
+
connection: CubeDirectConnection,
|
|
104
|
+
schema: string,
|
|
105
|
+
): Promise<readonly CubeExploredTable[]>;
|
|
106
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
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 type { ModelContext } from '@finos/legend-cube';
|
|
18
|
+
|
|
19
|
+
// A data product cube (PLAN §6.8, DP-1) saves its project once, as its
|
|
20
|
+
// model: the project and the version its data products were deployed from,
|
|
21
|
+
// the environment type and, once picked, the warehouse. The engine's
|
|
22
|
+
// implementation builds, for each run, the project at that version and a
|
|
23
|
+
// lakehouse runtime at a fixed path, which the saved runtime names
|
|
24
|
+
|
|
25
|
+
/** The kind of a data product cube's model: Cube's own, never an engine model kind */
|
|
26
|
+
export const CUBE_DATA_PRODUCT_MODEL_TYPE = 'cubeDataProduct';
|
|
27
|
+
|
|
28
|
+
/** The runtime a data product cube runs with, in a package of Cube's own */
|
|
29
|
+
export const CUBE_DATA_PRODUCT_RUNTIME_PATH = 'cube::dataProduct::Runtime';
|
|
30
|
+
|
|
31
|
+
/** The warehouse a run uses when neither the cube nor the viewer has one (PLAN §6.8) */
|
|
32
|
+
export const CUBE_DEFAULT_CONSUMER_WAREHOUSE = 'LAKEHOUSE_CONSUMER_DEFAULT_WH';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The deployment classes Cube reads data products from: production and
|
|
36
|
+
* production-parallel, as Data Cube's selection offers. Development
|
|
37
|
+
* deployments are not supported in this phase (user, 2026-10-09)
|
|
38
|
+
*/
|
|
39
|
+
export enum CubeDataProductEnvironmentType {
|
|
40
|
+
PRODUCTION = 'PRODUCTION',
|
|
41
|
+
PRODUCTION_PARALLEL = 'PRODUCTION_PARALLEL',
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** The wire name of the development class, which Cube refuses by name */
|
|
45
|
+
const DEVELOPMENT_ENVIRONMENT_TYPE = 'DEVELOPMENT';
|
|
46
|
+
|
|
47
|
+
/** What a data product cube's model holds */
|
|
48
|
+
export interface CubeDataProductProject {
|
|
49
|
+
readonly groupId: string;
|
|
50
|
+
readonly artifactId: string;
|
|
51
|
+
/** The version the data products were deployed from, as the catalog gave it */
|
|
52
|
+
readonly versionId: string;
|
|
53
|
+
readonly environmentType: CubeDataProductEnvironmentType;
|
|
54
|
+
/** The warehouse the cube runs on; none until one is picked */
|
|
55
|
+
readonly warehouse?: string | undefined;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const ENVIRONMENT_TYPES = Object.values(
|
|
59
|
+
CubeDataProductEnvironmentType,
|
|
60
|
+
) as string[];
|
|
61
|
+
|
|
62
|
+
const isNonEmptyString = (value: unknown): value is string =>
|
|
63
|
+
typeof value === 'string' && value.length > 0;
|
|
64
|
+
|
|
65
|
+
/** The model of a data product cube */
|
|
66
|
+
export const createCubeDataProductModel = (
|
|
67
|
+
project: CubeDataProductProject,
|
|
68
|
+
): ModelContext =>
|
|
69
|
+
({
|
|
70
|
+
_type: CUBE_DATA_PRODUCT_MODEL_TYPE,
|
|
71
|
+
groupId: project.groupId,
|
|
72
|
+
artifactId: project.artifactId,
|
|
73
|
+
versionId: project.versionId,
|
|
74
|
+
environmentType: project.environmentType,
|
|
75
|
+
...(project.warehouse !== undefined
|
|
76
|
+
? { warehouse: project.warehouse }
|
|
77
|
+
: {}),
|
|
78
|
+
}) as ModelContext;
|
|
79
|
+
|
|
80
|
+
export const isCubeDataProductModel = (model: ModelContext): boolean =>
|
|
81
|
+
model._type === CUBE_DATA_PRODUCT_MODEL_TYPE;
|
|
82
|
+
|
|
83
|
+
/** Whether a version moves: a SNAPSHOT's data and columns may change under a cube */
|
|
84
|
+
export const isCubeSnapshotVersion = (versionId: string): boolean =>
|
|
85
|
+
versionId.endsWith('-SNAPSHOT');
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The model with another warehouse; every other key is kept, including ones
|
|
89
|
+
* a later version saved, which a cube keeps as they are
|
|
90
|
+
*/
|
|
91
|
+
export const withCubeDataProductWarehouse = (
|
|
92
|
+
model: ModelContext,
|
|
93
|
+
warehouse: string,
|
|
94
|
+
): ModelContext => ({ ...model, warehouse });
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Why Cube can't run a data product model, in words a user can act on; none
|
|
98
|
+
* when it can. A saved model is checked before every use: it may have been
|
|
99
|
+
* written by hand or by a later version
|
|
100
|
+
*/
|
|
101
|
+
export const checkCubeDataProductModel = (
|
|
102
|
+
model: ModelContext,
|
|
103
|
+
): readonly string[] => {
|
|
104
|
+
const problems: string[] = [];
|
|
105
|
+
(['groupId', 'artifactId', 'versionId'] as const).forEach((key) => {
|
|
106
|
+
if (!isNonEmptyString(model[key])) {
|
|
107
|
+
problems.push(`The data product's project has no ${key}`);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
if (model.environmentType === DEVELOPMENT_ENVIRONMENT_TYPE) {
|
|
111
|
+
problems.push(`Cube doesn't read development data products yet`);
|
|
112
|
+
} else if (!ENVIRONMENT_TYPES.includes(model.environmentType as string)) {
|
|
113
|
+
problems.push(
|
|
114
|
+
`Cube doesn't know the environment type "${String(model.environmentType)}"`,
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
if (model.warehouse !== undefined && !isNonEmptyString(model.warehouse)) {
|
|
118
|
+
problems.push(`The cube's warehouse must be a name`);
|
|
119
|
+
}
|
|
120
|
+
return problems;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/** The project of a data product model Cube can run; undefined for any other model */
|
|
124
|
+
export const getCubeDataProductProject = (
|
|
125
|
+
model: ModelContext,
|
|
126
|
+
): CubeDataProductProject | undefined =>
|
|
127
|
+
isCubeDataProductModel(model) && !checkCubeDataProductModel(model).length
|
|
128
|
+
? {
|
|
129
|
+
groupId: model.groupId as string,
|
|
130
|
+
artifactId: model.artifactId as string,
|
|
131
|
+
versionId: model.versionId as string,
|
|
132
|
+
environmentType:
|
|
133
|
+
model.environmentType as CubeDataProductEnvironmentType,
|
|
134
|
+
warehouse: model.warehouse as string | undefined,
|
|
135
|
+
}
|
|
136
|
+
: undefined;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* The warehouse a run uses (PLAN §6.8, DP-2): the cube's own, else the one
|
|
140
|
+
* the viewer last picked, else the default consumer warehouse. Shown and sent
|
|
141
|
+
* alike, so the page shows what runs
|
|
142
|
+
*/
|
|
143
|
+
export const getEffectiveCubeWarehouse = (
|
|
144
|
+
project: Pick<CubeDataProductProject, 'warehouse'>,
|
|
145
|
+
rememberedWarehouse: string | undefined,
|
|
146
|
+
): string =>
|
|
147
|
+
project.warehouse ??
|
|
148
|
+
(isNonEmptyString(rememberedWarehouse)
|
|
149
|
+
? rememberedWarehouse
|
|
150
|
+
: CUBE_DEFAULT_CONSUMER_WAREHOUSE);
|
|
@@ -0,0 +1,245 @@
|
|
|
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 type { Schema } from '@finos/legend-cube';
|
|
18
|
+
import {
|
|
19
|
+
type CubeDataProductEnvironmentType,
|
|
20
|
+
type CubeDataProductProject,
|
|
21
|
+
isCubeSnapshotVersion,
|
|
22
|
+
} from './CubeDataProduct.js';
|
|
23
|
+
import type { CubeEngineError, CubeResultValue, NodeId } from './CubeEngine.js';
|
|
24
|
+
|
|
25
|
+
// The deployed data products a cube can read (PLAN §6.8), in Cube's own
|
|
26
|
+
// terms: what the catalog lists, what a product's deployed artifact says of
|
|
27
|
+
// its access points, and the schemas of saved sources. The host's
|
|
28
|
+
// implementation reads the marketplace or the lakehouse's lists, the depot
|
|
29
|
+
// and the artifacts; nothing here names their wire classes
|
|
30
|
+
|
|
31
|
+
/** A deployed data product the catalog lists, at the version it was deployed from */
|
|
32
|
+
export class CubeDataProductCandidate {
|
|
33
|
+
/** The catalog's id for the product, which its links use */
|
|
34
|
+
readonly id: string;
|
|
35
|
+
/** The deployment, as text */
|
|
36
|
+
readonly deploymentId: string;
|
|
37
|
+
/** The path of its DataProduct element */
|
|
38
|
+
readonly dataProductPath: string;
|
|
39
|
+
readonly title: string;
|
|
40
|
+
readonly description: string | undefined;
|
|
41
|
+
readonly groupId: string;
|
|
42
|
+
readonly artifactId: string;
|
|
43
|
+
/** The version it was deployed from, as the catalog gave it, snapshots included */
|
|
44
|
+
readonly versionId: string;
|
|
45
|
+
readonly environmentType: CubeDataProductEnvironmentType;
|
|
46
|
+
/** The producer's environment, for display */
|
|
47
|
+
readonly producerEnvironmentName: string | undefined;
|
|
48
|
+
|
|
49
|
+
constructor(fields: {
|
|
50
|
+
id: string;
|
|
51
|
+
deploymentId: string;
|
|
52
|
+
dataProductPath: string;
|
|
53
|
+
title: string;
|
|
54
|
+
description?: string | undefined;
|
|
55
|
+
groupId: string;
|
|
56
|
+
artifactId: string;
|
|
57
|
+
versionId: string;
|
|
58
|
+
environmentType: CubeDataProductEnvironmentType;
|
|
59
|
+
producerEnvironmentName?: string | undefined;
|
|
60
|
+
}) {
|
|
61
|
+
this.id = fields.id;
|
|
62
|
+
this.deploymentId = fields.deploymentId;
|
|
63
|
+
this.dataProductPath = fields.dataProductPath;
|
|
64
|
+
this.title = fields.title;
|
|
65
|
+
this.description = fields.description;
|
|
66
|
+
this.groupId = fields.groupId;
|
|
67
|
+
this.artifactId = fields.artifactId;
|
|
68
|
+
this.versionId = fields.versionId;
|
|
69
|
+
this.environmentType = fields.environmentType;
|
|
70
|
+
this.producerEnvironmentName = fields.producerEnvironmentName;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Whether it was deployed from a moving version, whose data may change under a cube */
|
|
74
|
+
get isSnapshot(): boolean {
|
|
75
|
+
return isCubeSnapshotVersion(this.versionId);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** An access point of a deployed product, as its artifact describes it */
|
|
80
|
+
export class CubeAccessPoint {
|
|
81
|
+
readonly id: string;
|
|
82
|
+
readonly title: string | undefined;
|
|
83
|
+
readonly description: string | undefined;
|
|
84
|
+
/** Its columns, as the artifact types them; none when it can't be read */
|
|
85
|
+
readonly schema: Schema | undefined;
|
|
86
|
+
/** Why it can't be picked, e.g. it takes parameters; none when it can */
|
|
87
|
+
readonly disabledReason: string | undefined;
|
|
88
|
+
/** A few rows the artifact holds, by the schema's columns */
|
|
89
|
+
readonly sampleRows: readonly (readonly CubeResultValue[])[];
|
|
90
|
+
|
|
91
|
+
constructor(fields: {
|
|
92
|
+
id: string;
|
|
93
|
+
title?: string | undefined;
|
|
94
|
+
description?: string | undefined;
|
|
95
|
+
schema?: Schema | undefined;
|
|
96
|
+
disabledReason?: string | undefined;
|
|
97
|
+
sampleRows?: readonly (readonly CubeResultValue[])[];
|
|
98
|
+
}) {
|
|
99
|
+
this.id = fields.id;
|
|
100
|
+
this.title = fields.title;
|
|
101
|
+
this.description = fields.description;
|
|
102
|
+
this.schema = fields.schema;
|
|
103
|
+
this.disabledReason = fields.disabledReason;
|
|
104
|
+
this.sampleRows = fields.sampleRows ?? [];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
get isPickable(): boolean {
|
|
108
|
+
return this.disabledReason === undefined && this.schema !== undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export class CubeAccessPointGroup {
|
|
113
|
+
readonly id: string;
|
|
114
|
+
readonly title: string | undefined;
|
|
115
|
+
readonly accessPoints: readonly CubeAccessPoint[];
|
|
116
|
+
/** Open to everyone in the organization, as the host's marketplace marks such groups */
|
|
117
|
+
readonly isEnterprise: boolean;
|
|
118
|
+
|
|
119
|
+
constructor(fields: {
|
|
120
|
+
id: string;
|
|
121
|
+
title?: string | undefined;
|
|
122
|
+
accessPoints: readonly CubeAccessPoint[];
|
|
123
|
+
isEnterprise?: boolean | undefined;
|
|
124
|
+
}) {
|
|
125
|
+
this.id = fields.id;
|
|
126
|
+
this.title = fields.title;
|
|
127
|
+
this.accessPoints = fields.accessPoints;
|
|
128
|
+
this.isEnterprise = fields.isEnterprise ?? false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* The viewer's access to an access point group, as the marketplace shows
|
|
134
|
+
* it: open to everyone, granted, on its way through approval, refused, or
|
|
135
|
+
* never asked for
|
|
136
|
+
*/
|
|
137
|
+
export enum CubeAccessPointGroupAccess {
|
|
138
|
+
ENTERPRISE = 'ENTERPRISE',
|
|
139
|
+
APPROVED = 'APPROVED',
|
|
140
|
+
SUBMITTED_FOR_APPROVALS = 'SUBMITTED_FOR_APPROVALS',
|
|
141
|
+
PENDING_MANAGER_APPROVAL = 'PENDING_MANAGER_APPROVAL',
|
|
142
|
+
PENDING_DATA_OWNER_APPROVAL = 'PENDING_DATA_OWNER_APPROVAL',
|
|
143
|
+
DENIED = 'DENIED',
|
|
144
|
+
NO_ACCESS = 'NO_ACCESS',
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** A deployed product's access points, by group */
|
|
148
|
+
export class CubeDataProductDescription {
|
|
149
|
+
readonly candidate: CubeDataProductCandidate;
|
|
150
|
+
readonly groups: readonly CubeAccessPointGroup[];
|
|
151
|
+
|
|
152
|
+
constructor(
|
|
153
|
+
candidate: CubeDataProductCandidate,
|
|
154
|
+
groups: readonly CubeAccessPointGroup[],
|
|
155
|
+
) {
|
|
156
|
+
this.candidate = candidate;
|
|
157
|
+
this.groups = groups;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** Where a saved source's access point is */
|
|
162
|
+
export interface CubeAccessPointLocation {
|
|
163
|
+
readonly dataProduct: string;
|
|
164
|
+
readonly accessPointGroup: string;
|
|
165
|
+
readonly accessPoint: string;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/** What a marketplace link points at */
|
|
169
|
+
export interface CubeMarketplaceLinkTarget {
|
|
170
|
+
readonly dataProductId: string;
|
|
171
|
+
readonly deploymentId: string;
|
|
172
|
+
readonly environmentType: CubeDataProductEnvironmentType;
|
|
173
|
+
readonly accessPointGroup?: string | undefined;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* The deployed data products, for the source dialog and for re-checking
|
|
178
|
+
* saved sources: its own port, beside the `CubeEngine`, so hosts without
|
|
179
|
+
* data products need neither. Calls fail with a `CubeEngineError`: with no
|
|
180
|
+
* node for listing and describing, with the node's id for schemas
|
|
181
|
+
*/
|
|
182
|
+
export interface CubeDataProductCatalog {
|
|
183
|
+
/** The deployment classes the host lists, the default first */
|
|
184
|
+
readonly environmentTypes: readonly CubeDataProductEnvironmentType[];
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Whether `search` matches and ranks the text on a server. Otherwise the
|
|
188
|
+
* text is matched on the client, over the class's whole list
|
|
189
|
+
*/
|
|
190
|
+
readonly searchesOnServer?: boolean | undefined;
|
|
191
|
+
|
|
192
|
+
/** The most products one server search gives: an answer this long may be cut short */
|
|
193
|
+
readonly searchLimit?: number | undefined;
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Whether an answer `search` gave leaves out matches the server has, as
|
|
197
|
+
* its page says, counting rows the catalog dropped. Without it, an answer
|
|
198
|
+
* as long as `searchLimit` is taken to be cut short
|
|
199
|
+
*/
|
|
200
|
+
readonly isCutShort?:
|
|
201
|
+
| ((answer: readonly CubeDataProductCandidate[]) => boolean)
|
|
202
|
+
| undefined;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* The deployed products of a class whose title, id or description holds
|
|
206
|
+
* the text, or, searching on a server, the ones it matches, in its order
|
|
207
|
+
*/
|
|
208
|
+
search(
|
|
209
|
+
search: {
|
|
210
|
+
text: string;
|
|
211
|
+
environmentType: CubeDataProductEnvironmentType;
|
|
212
|
+
},
|
|
213
|
+
signal?: AbortSignal,
|
|
214
|
+
): Promise<readonly CubeDataProductCandidate[]>;
|
|
215
|
+
|
|
216
|
+
/** A product's access points, read from its artifact at the version it was deployed from */
|
|
217
|
+
describe(
|
|
218
|
+
candidate: CubeDataProductCandidate,
|
|
219
|
+
signal?: AbortSignal,
|
|
220
|
+
): Promise<CubeDataProductDescription>;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* The schema of each saved source, from the artifact at the cube's
|
|
224
|
+
* version: one entry per key, failures included. `fresh` reads the
|
|
225
|
+
* artifact again rather than what this page visit read, e.g. on Refresh
|
|
226
|
+
*/
|
|
227
|
+
resolveSchemas(
|
|
228
|
+
project: CubeDataProductProject,
|
|
229
|
+
sources: ReadonlyMap<NodeId, CubeAccessPointLocation>,
|
|
230
|
+
options?: { readonly fresh?: boolean | undefined },
|
|
231
|
+
): Promise<Map<NodeId, Schema | CubeEngineError>>;
|
|
232
|
+
|
|
233
|
+
/** The product's page in the marketplace, or none when the host has no marketplace */
|
|
234
|
+
getMarketplaceLink(target: CubeMarketplaceLinkTarget): string | undefined;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* The viewer's access to each of the product's access point groups, by
|
|
238
|
+
* group id; a group it can't tell has no entry. Optional: a host without
|
|
239
|
+
* it shows no access
|
|
240
|
+
*/
|
|
241
|
+
getAccess?(
|
|
242
|
+
candidate: CubeDataProductCandidate,
|
|
243
|
+
signal?: AbortSignal,
|
|
244
|
+
): Promise<ReadonlyMap<string, CubeAccessPointGroupAccess>>;
|
|
245
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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 type { ModelContext } from '@finos/legend-cube';
|
|
18
|
+
import type {
|
|
19
|
+
CubeDirectConnection,
|
|
20
|
+
CubeExploredTable,
|
|
21
|
+
} from './CubeConnectionExplorer.js';
|
|
22
|
+
|
|
23
|
+
// A direct-connection cube (PLAN §6.8) saves its connection once, as its
|
|
24
|
+
// model, and its tables stay ordinary relational sources of one generated
|
|
25
|
+
// Database. The engine's implementation builds that Database, its connection
|
|
26
|
+
// and its runtime for each call, from the tables the call needs; their paths
|
|
27
|
+
// are fixed, so saved tables and the saved runtime always name them
|
|
28
|
+
|
|
29
|
+
/** The kind of a direct-connection cube's model: Cube's own, never an engine model kind */
|
|
30
|
+
export const CUBE_DIRECT_MODEL_TYPE = 'cubeDirectConnection';
|
|
31
|
+
|
|
32
|
+
/** The Database every table of a direct-connection cube belongs to */
|
|
33
|
+
export const CUBE_DIRECT_DATABASE_PATH = 'cube::direct::Database';
|
|
34
|
+
export const CUBE_DIRECT_CONNECTION_PATH = 'cube::direct::Connection';
|
|
35
|
+
/** The runtime a direct-connection cube runs with */
|
|
36
|
+
export const CUBE_DIRECT_RUNTIME_PATH = 'cube::direct::Runtime';
|
|
37
|
+
|
|
38
|
+
/** The model of a direct-connection cube */
|
|
39
|
+
export const createCubeDirectModel = (
|
|
40
|
+
connection: CubeDirectConnection,
|
|
41
|
+
): ModelContext =>
|
|
42
|
+
// the connection is protocol JSON, so plain JSON
|
|
43
|
+
({ _type: CUBE_DIRECT_MODEL_TYPE, connection }) as unknown as ModelContext;
|
|
44
|
+
|
|
45
|
+
/** The connection of a direct-connection cube's model; undefined for any other model */
|
|
46
|
+
export const getCubeDirectConnection = (
|
|
47
|
+
model: ModelContext,
|
|
48
|
+
): CubeDirectConnection | undefined =>
|
|
49
|
+
model._type === CUBE_DIRECT_MODEL_TYPE &&
|
|
50
|
+
model.connection &&
|
|
51
|
+
typeof model.connection === 'object' &&
|
|
52
|
+
!Array.isArray(model.connection)
|
|
53
|
+
? (model.connection as CubeDirectConnection)
|
|
54
|
+
: undefined;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The coordinates of a table read from the connection's database, every name
|
|
58
|
+
* quoted as the built Database stores it
|
|
59
|
+
*/
|
|
60
|
+
export const getCubeDirectTableCoordinates = (
|
|
61
|
+
schema: string,
|
|
62
|
+
table: CubeExploredTable,
|
|
63
|
+
): { database: string; schema: string; table: string } => ({
|
|
64
|
+
database: CUBE_DIRECT_DATABASE_PATH,
|
|
65
|
+
schema: `"${schema}"`,
|
|
66
|
+
table: table.storedName,
|
|
67
|
+
});
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import type { IR, ModelContext, Schema } from '@finos/legend-cube';
|
|
17
|
+
import type { IR, JsonObject, ModelContext, Schema } from '@finos/legend-cube';
|
|
18
18
|
|
|
19
19
|
// The engine port (PLAN §8.7): what Cube asks of an engine, in Cube's own
|
|
20
20
|
// terms. Only its Legend implementation, under `protocol/pure/v1/`, knows the
|
|
@@ -64,10 +64,24 @@ export interface CubeOutlineDatabase {
|
|
|
64
64
|
readonly schemas: readonly CubeOutlineSchema[];
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
/** A relational connection of a runtime, for the operations some databases take another way (PLAN §11.4) */
|
|
68
|
+
export interface CubeOutlineConnection {
|
|
69
|
+
/** The store it is keyed by */
|
|
70
|
+
readonly storePath: string;
|
|
71
|
+
/** The engine's name for its database type, e.g. `H2` or `SqlServer` */
|
|
72
|
+
readonly databaseType: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
67
75
|
export interface CubeOutlineRuntime {
|
|
68
76
|
readonly path: string;
|
|
69
77
|
/** The stores its connections are keyed by, exactly; includes are not followed (PLAN §6.2.5) */
|
|
70
78
|
readonly storePaths: readonly string[];
|
|
79
|
+
/**
|
|
80
|
+
* Its relational connections that name a database type, a list rather
|
|
81
|
+
* than a record keyed by a store path from the model; optional, as an
|
|
82
|
+
* outline from before M2 has none
|
|
83
|
+
*/
|
|
84
|
+
readonly connections?: readonly CubeOutlineConnection[];
|
|
71
85
|
}
|
|
72
86
|
|
|
73
87
|
/** What a model offers the source picker: its databases and runtimes, as plain data */
|
|
@@ -87,6 +101,30 @@ export enum CubeEngineErrorKind {
|
|
|
87
101
|
NETWORK = 'network',
|
|
88
102
|
}
|
|
89
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Where in a text the engine places a problem: the source id the text was
|
|
106
|
+
* parsed under, and its 1-based first and last lines and columns, the last
|
|
107
|
+
* column included (an Extend column's expression, PLAN §11.7)
|
|
108
|
+
*/
|
|
109
|
+
export interface CubeSourceLocation {
|
|
110
|
+
readonly sourceId: string;
|
|
111
|
+
readonly startLine: number;
|
|
112
|
+
readonly startColumn: number;
|
|
113
|
+
readonly endLine: number;
|
|
114
|
+
readonly endColumn: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* An expression's text as the engine's JSON (PLAN §11.7), its number
|
|
119
|
+
* literals as their digit strings: as a column stores it, with no source
|
|
120
|
+
* information, and as the engine located it in the text, so a later error
|
|
121
|
+
* can point into the text
|
|
122
|
+
*/
|
|
123
|
+
export interface CubeParsedExpression {
|
|
124
|
+
readonly lambda: JsonObject;
|
|
125
|
+
readonly located: JsonObject;
|
|
126
|
+
}
|
|
127
|
+
|
|
90
128
|
/**
|
|
91
129
|
* An engine failure, placed on the node it concerns: the node a stamp in the
|
|
92
130
|
* error points to, else the source being typed or the node being run.
|
|
@@ -100,12 +138,15 @@ export class CubeEngineError extends Error {
|
|
|
100
138
|
readonly firstLine: string;
|
|
101
139
|
/** The engine's whole message, without its Java trace, shown in the panel */
|
|
102
140
|
readonly detail: string;
|
|
141
|
+
/** Where in a text the error is, when the text was parsed with its locations */
|
|
142
|
+
readonly location: CubeSourceLocation | undefined;
|
|
103
143
|
|
|
104
144
|
constructor(
|
|
105
145
|
kind: CubeEngineErrorKind,
|
|
106
146
|
detail: string,
|
|
107
147
|
nodeId?: NodeId,
|
|
108
148
|
role?: string,
|
|
149
|
+
location?: CubeSourceLocation,
|
|
109
150
|
) {
|
|
110
151
|
const firstLine = detail.split('\n', 1)[0]?.trim() ?? '';
|
|
111
152
|
super(firstLine);
|
|
@@ -115,6 +156,7 @@ export class CubeEngineError extends Error {
|
|
|
115
156
|
this.firstLine = firstLine;
|
|
116
157
|
this.nodeId = nodeId;
|
|
117
158
|
this.role = role;
|
|
159
|
+
this.location = location;
|
|
118
160
|
}
|
|
119
161
|
}
|
|
120
162
|
|
|
@@ -152,4 +194,18 @@ export interface CubeEngine {
|
|
|
152
194
|
): Promise<CubeResult>;
|
|
153
195
|
/** The Pure text of a lambda, for display only: never parsed back */
|
|
154
196
|
renderPure(lambda: IR): Promise<string>;
|
|
197
|
+
/**
|
|
198
|
+
* An Extend column's expression as the engine's JSON (PLAN §11.7), located
|
|
199
|
+
* under the source id; rejects with a `CubeEngineError` placed in the text
|
|
200
|
+
*/
|
|
201
|
+
parseExpression(
|
|
202
|
+
code: string,
|
|
203
|
+
sourceId: string,
|
|
204
|
+
): Promise<CubeParsedExpression>;
|
|
205
|
+
/**
|
|
206
|
+
* Plans an execution lambda for its runtime's database, as a run would,
|
|
207
|
+
* without running it: some expressions type, then fail when planned (PLAN
|
|
208
|
+
* §11.7). Rejects with a `CubeEngineError`
|
|
209
|
+
*/
|
|
210
|
+
planLambda(model: ModelContext, lambda: IR): Promise<void>;
|
|
155
211
|
}
|