@finos/legend-cube-builder 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -19
- package/docs/adding-an-operation.md +102 -13
- package/docs/hosting.md +82 -4
- package/docs/testing.md +114 -9
- 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 +12 -2
- 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 +76 -3
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +102 -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 +12 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +21 -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 +25 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeOperationsTestUtils.js +56 -10
- package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -1
- 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 +14 -1
- 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 +8 -1
- 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 +31 -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.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +6 -3
- 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 -20
- 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/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/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/CubeJoinEditor.d.ts +2 -4
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +7 -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 +51 -13
- 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 +15 -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.map +1 -1
- package/lib/components/editors/CubeRenameEditor.js +6 -4
- package/lib/components/editors/CubeRenameEditor.js.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.js +1 -1
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
- package/lib/components/editors/CubeSortEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeSortEditor.js +10 -37
- package/lib/components/editors/CubeSortEditor.js.map +1 -1
- 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 -5
- package/lib/components/editors/CubeSourceEditor.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 +19 -8
- 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.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +14 -2
- 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 +37 -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/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_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 +27 -1
- 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 +100 -16
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +347 -47
- 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 +15 -5
- 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 +14 -6
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
- package/lib/stores/CubeGridQuickActions.js +53 -15
- package/lib/stores/CubeGridQuickActions.js.map +1 -1
- 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 +101 -5
- package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeNodeEditorState.js +221 -10
- package/lib/stores/CubeNodeEditorState.js.map +1 -1
- package/lib/stores/CubeShowPureState.d.ts +5 -2
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +7 -4
- 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/CubeJoinDraft.d.ts +9 -10
- package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeJoinDraft.js +92 -21
- 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.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +20 -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/CubeSortDraft.d.ts +2 -10
- package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeSortDraft.js +9 -35
- package/lib/stores/editors/CubeSortDraft.js.map +1 -1
- 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 +10 -6
- 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 +25 -1
- package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
- package/src/__lib__/LegendCubeLabels.ts +162 -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 +38 -0
- package/src/__test-utils__/CubeExpressionTestUtils.ts +119 -0
- package/src/__test-utils__/CubeOperationsTestUtils.ts +93 -18
- 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 +25 -1
- 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 +13 -0
- package/src/components/CubeSchemaColumnsTable.tsx +49 -0
- package/src/components/canvas/CubeCanvas.tsx +49 -14
- package/src/components/canvas/CubeCanvasContextMenu.tsx +31 -30
- package/src/components/canvas/CubeCanvasDnd.ts +16 -9
- package/src/components/canvas/CubeCanvasElements.ts +8 -2
- package/src/components/canvas/CubeCanvasNode.tsx +61 -43
- 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/CubeConcatEditor.tsx +374 -0
- package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
- package/src/components/editors/CubeDifferenceEditor.tsx +87 -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/CubeJoinEditor.tsx +12 -132
- package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +91 -28
- package/src/components/editors/CubeNodeEditorPopper.tsx +183 -0
- package/src/components/editors/CubeNodeEditorRegistry.ts +21 -0
- package/src/components/editors/CubePartitionEditor.tsx +208 -0
- package/src/components/editors/CubeRenameEditor.tsx +10 -5
- package/src/components/editors/CubeRestrictEditor.tsx +1 -1
- package/src/components/editors/CubeSortEditor.tsx +20 -142
- package/src/components/editors/CubeSortRowEditor.tsx +176 -0
- package/src/components/editors/CubeSourceEditor.tsx +42 -30
- 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 +48 -10
- package/src/components/grid/CubeGridValues.ts +55 -0
- package/src/components/grid/CubeResultGrid.tsx +24 -8
- 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 +43 -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/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_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 +42 -1
- 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 +511 -63
- 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 +24 -5
- package/src/stores/CubeExtendTyping.ts +291 -0
- package/src/stores/CubeGridQuickActions.ts +69 -14
- package/src/stores/CubeHost.ts +71 -1
- package/src/stores/CubeIngestRecheck.ts +92 -0
- package/src/stores/CubeNodeEditorState.ts +278 -9
- package/src/stores/CubeShowPureState.ts +7 -4
- 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/CubeJoinDraft.ts +130 -41
- package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
- package/src/stores/editors/CubeNodeDraft.ts +26 -6
- package/src/stores/editors/CubeNodeDraftRegistry.ts +25 -0
- package/src/stores/editors/CubePartitionDraft.ts +214 -0
- package/src/stores/editors/CubeSortDraft.ts +17 -54
- 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 +89 -0
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { V1_EnrichedUserApprovalStatus, V1_EntitlementsDataProductLiteModelSchema, V1_liteDataContractWithUserStatusModelSchema, V1_ResourceType, V1_SdlcDeploymentDataProductOrigin, } from '@finos/legend-graph';
|
|
17
|
+
import { StoreProjectData, } from '@finos/legend-server-depot';
|
|
18
|
+
import { DataProductSearchResult, LakehouseDataProductSearchResultDetails, LakehouseSDLCDataProductSearchResultOrigin, SearchType, } from '@finos/legend-server-marketplace';
|
|
19
|
+
import { isNonNullable } from '@finos/legend-shared';
|
|
20
|
+
import { StoredFileGeneration } from '@finos/legend-storage';
|
|
21
|
+
import { deserialize } from 'serializr';
|
|
22
|
+
import { CubeDataProductEnvironmentType, } from '../../../CubeDataProduct.js';
|
|
23
|
+
import { CubeAccessPointGroupAccess, CubeDataProductCandidate, } from '../../../CubeDataProductCatalog.js';
|
|
24
|
+
import { CubeEngineError, CubeEngineErrorKind, } from '../../../CubeEngine.js';
|
|
25
|
+
import { V1_findCubeAccessPointSchema, V1_readCubeDataProductDescription, } from './V1_CubeDataProductArtifact.js';
|
|
26
|
+
// The deployed data products, as Legend Query lists and reads them: the
|
|
27
|
+
// lakehouse's lite list per class (DataProductSelectorState), then a
|
|
28
|
+
// product's deployed artifact (getGenerationFilesByType) and its definition
|
|
29
|
+
// at the deployed version, from the depot. Cube pages the lite list itself
|
|
30
|
+
// (PLAN §6.8): the client's own loop never ends on a page that says more
|
|
31
|
+
// follow without saying where, or on a repeated cursor, and can't be stopped.
|
|
32
|
+
// Given the marketplace's search API, a search runs there instead, as the
|
|
33
|
+
// marketplace's Lakehouse Access search does, and the list is never read
|
|
34
|
+
/** The generation type of a data product's artifact */
|
|
35
|
+
const DATA_PRODUCT_GENERATION_TYPE = 'dataProduct';
|
|
36
|
+
/** The classes Cube lists, Production first, as Data Cube's selection offers */
|
|
37
|
+
const ENVIRONMENT_TYPES = [
|
|
38
|
+
CubeDataProductEnvironmentType.PRODUCTION,
|
|
39
|
+
CubeDataProductEnvironmentType.PRODUCTION_PARALLEL,
|
|
40
|
+
];
|
|
41
|
+
/** The lite list's page size, as the lakehouse client's own loop uses */
|
|
42
|
+
const LITE_PAGE_SIZE = 1000;
|
|
43
|
+
/** Past this many pages a list is taken to be stuck */
|
|
44
|
+
const LITE_PAGE_CAP = 50;
|
|
45
|
+
/** The products one marketplace search gives: its first page, of this size */
|
|
46
|
+
const SEARCH_PAGE_SIZE = 100;
|
|
47
|
+
export const V1_CUBE_DATA_PRODUCT_LIST_ERROR = {
|
|
48
|
+
UNREADABLE_PAGE: "The lakehouse's answer isn't a page of data products",
|
|
49
|
+
NO_CURSOR: 'The lakehouse said more data products follow, but not where the next page starts',
|
|
50
|
+
REPEATED_CURSOR: 'The lakehouse sent the same page of data products twice',
|
|
51
|
+
TOO_MANY_PAGES: `The lakehouse's data product list runs past ${LITE_PAGE_CAP} pages`,
|
|
52
|
+
};
|
|
53
|
+
export const V1_CUBE_DATA_PRODUCT_SEARCH_ERROR = {
|
|
54
|
+
UNREADABLE_PAGE: "The marketplace's answer isn't a page of search results",
|
|
55
|
+
};
|
|
56
|
+
const toMessage = (error) => error instanceof Error ? error.message : String(error);
|
|
57
|
+
const isPlainObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
58
|
+
/** Stops a list between pages once its search is dropped */
|
|
59
|
+
const throwIfAborted = (signal) => {
|
|
60
|
+
if (signal?.aborted) {
|
|
61
|
+
throw signal.reason instanceof Error
|
|
62
|
+
? signal.reason
|
|
63
|
+
: new Error('The data product list was stopped');
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
/** A lite row as Cube lists it; none for an ad hoc or incomplete one */
|
|
67
|
+
const toCandidate = (row, environmentType) => {
|
|
68
|
+
const { origin } = row;
|
|
69
|
+
if (!(origin instanceof V1_SdlcDeploymentDataProductOrigin) ||
|
|
70
|
+
!origin.group ||
|
|
71
|
+
!origin.artifact ||
|
|
72
|
+
!origin.version ||
|
|
73
|
+
!row.fullPath ||
|
|
74
|
+
row.lakehouseEnvironment?.type.toUpperCase() !== environmentType) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
return new CubeDataProductCandidate({
|
|
78
|
+
id: row.id,
|
|
79
|
+
deploymentId: String(row.deploymentId),
|
|
80
|
+
dataProductPath: row.fullPath,
|
|
81
|
+
title: row.title ?? row.id,
|
|
82
|
+
// a wire null is no description
|
|
83
|
+
description: row.description ?? undefined,
|
|
84
|
+
groupId: origin.group,
|
|
85
|
+
artifactId: origin.artifact,
|
|
86
|
+
versionId: origin.version,
|
|
87
|
+
environmentType,
|
|
88
|
+
producerEnvironmentName: row.lakehouseEnvironment.producerEnvironmentName,
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
/** A lite row read on its own: one that can't be read is dropped, never failing the list */
|
|
92
|
+
const toLiteCandidate = (row, environmentType) => {
|
|
93
|
+
try {
|
|
94
|
+
return toCandidate(deserialize(V1_EntitlementsDataProductLiteModelSchema, row), environmentType);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* A search row as Cube lists it, the same candidate as its lite row's: none
|
|
102
|
+
* for a DataSpace, an error, an ad hoc or incomplete one, or another class's
|
|
103
|
+
*/
|
|
104
|
+
const toSearchCandidate = (result, environmentType) => {
|
|
105
|
+
const details = result.dataProductDetails;
|
|
106
|
+
if (!(details instanceof LakehouseDataProductSearchResultDetails)) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
const { origin } = details;
|
|
110
|
+
const deploymentId = details.deploymentId;
|
|
111
|
+
if (!(origin instanceof LakehouseSDLCDataProductSearchResultOrigin) ||
|
|
112
|
+
!origin.groupId ||
|
|
113
|
+
!origin.artifactId ||
|
|
114
|
+
!origin.versionId ||
|
|
115
|
+
!origin.path ||
|
|
116
|
+
!details.dataProductId ||
|
|
117
|
+
deploymentId === undefined ||
|
|
118
|
+
deploymentId === null ||
|
|
119
|
+
details.producerEnvironmentType?.toUpperCase() !== environmentType) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return new CubeDataProductCandidate({
|
|
123
|
+
id: details.dataProductId,
|
|
124
|
+
deploymentId: String(deploymentId),
|
|
125
|
+
dataProductPath: origin.path,
|
|
126
|
+
title: result.dataProductTitle ?? details.dataProductId,
|
|
127
|
+
description: result.dataProductDescription ?? undefined,
|
|
128
|
+
groupId: origin.groupId,
|
|
129
|
+
artifactId: origin.artifactId,
|
|
130
|
+
versionId: origin.versionId,
|
|
131
|
+
environmentType,
|
|
132
|
+
producerEnvironmentName: details.producerEnvironmentName,
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
/** A search row read on its own: one that can't be read, e.g. of an unknown type, is dropped, never failing the page */
|
|
136
|
+
const toSearchRowCandidate = (row, environmentType) => {
|
|
137
|
+
try {
|
|
138
|
+
return toSearchCandidate(DataProductSearchResult.serialization.fromJson(row), environmentType);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
/** The cursor's deployment, a number or a string of digits; none for anything else, null and '' included */
|
|
145
|
+
const toCursorDeploymentId = (value) => {
|
|
146
|
+
if (typeof value === 'number') {
|
|
147
|
+
return Number.isFinite(value) ? value : undefined;
|
|
148
|
+
}
|
|
149
|
+
return typeof value === 'string' && /^\d+$/u.test(value)
|
|
150
|
+
? Number(value)
|
|
151
|
+
: undefined;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* How far along approval a contract is, as the marketplace ranks a viewer's
|
|
155
|
+
* contracts for one group, so a granted one is never hidden behind a
|
|
156
|
+
* pending duplicate
|
|
157
|
+
*/
|
|
158
|
+
const APPROVAL_STAGE = {
|
|
159
|
+
[V1_EnrichedUserApprovalStatus.SUBMITTED_FOR_APPROVALS]: 1,
|
|
160
|
+
[V1_EnrichedUserApprovalStatus.PENDING_CONSUMER_PRIVILEGE_MANAGER_APPROVAL]: 2,
|
|
161
|
+
[V1_EnrichedUserApprovalStatus.PENDING_DATA_OWNER_APPROVAL]: 3,
|
|
162
|
+
[V1_EnrichedUserApprovalStatus.APPROVED]: 4,
|
|
163
|
+
};
|
|
164
|
+
/** A contract's status as the access the marketplace shows for it */
|
|
165
|
+
const toGroupAccess = (status) => {
|
|
166
|
+
switch (status) {
|
|
167
|
+
case V1_EnrichedUserApprovalStatus.APPROVED:
|
|
168
|
+
return CubeAccessPointGroupAccess.APPROVED;
|
|
169
|
+
case V1_EnrichedUserApprovalStatus.SUBMITTED_FOR_APPROVALS:
|
|
170
|
+
return CubeAccessPointGroupAccess.SUBMITTED_FOR_APPROVALS;
|
|
171
|
+
case V1_EnrichedUserApprovalStatus.PENDING_CONSUMER_PRIVILEGE_MANAGER_APPROVAL:
|
|
172
|
+
return CubeAccessPointGroupAccess.PENDING_MANAGER_APPROVAL;
|
|
173
|
+
case V1_EnrichedUserApprovalStatus.PENDING_DATA_OWNER_APPROVAL:
|
|
174
|
+
return CubeAccessPointGroupAccess.PENDING_DATA_OWNER_APPROVAL;
|
|
175
|
+
case V1_EnrichedUserApprovalStatus.DENIED:
|
|
176
|
+
return CubeAccessPointGroupAccess.DENIED;
|
|
177
|
+
default:
|
|
178
|
+
return CubeAccessPointGroupAccess.NO_ACCESS;
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
/** A product's description, by its project, version and path, read once per visit */
|
|
182
|
+
const descriptionKey = (groupId, artifactId, versionId, dataProductPath) => JSON.stringify([groupId, artifactId, versionId, dataProductPath]);
|
|
183
|
+
export class V1_LegendCubeDataProductCatalog {
|
|
184
|
+
environmentTypes = ENVIRONMENT_TYPES;
|
|
185
|
+
contractServerClient;
|
|
186
|
+
depotServerClient;
|
|
187
|
+
getAccessToken;
|
|
188
|
+
options;
|
|
189
|
+
/** Each class's list, read once per page visit */
|
|
190
|
+
lists = new Map();
|
|
191
|
+
/** Each product's description, by its project, version and path */
|
|
192
|
+
descriptions = new Map();
|
|
193
|
+
/** The search answers whose page leaves out matches */
|
|
194
|
+
cutShortAnswers = new WeakSet();
|
|
195
|
+
constructor(contractServerClient, depotServerClient, getAccessToken, options = {}) {
|
|
196
|
+
this.contractServerClient = contractServerClient;
|
|
197
|
+
this.depotServerClient = depotServerClient;
|
|
198
|
+
this.getAccessToken = getAccessToken;
|
|
199
|
+
this.options = options;
|
|
200
|
+
}
|
|
201
|
+
get searchesOnServer() {
|
|
202
|
+
return this.options.marketplaceServerClient !== undefined;
|
|
203
|
+
}
|
|
204
|
+
get searchLimit() {
|
|
205
|
+
return this.searchesOnServer ? SEARCH_PAGE_SIZE : undefined;
|
|
206
|
+
}
|
|
207
|
+
isCutShort(answer) {
|
|
208
|
+
return this.cutShortAnswers.has(answer);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The class's lite rows, page by page along the lakehouse's cursor. Stops
|
|
212
|
+
* with an error on a page that isn't one, on a missing or repeated cursor,
|
|
213
|
+
* or past the page cap, and between pages once the search is dropped.
|
|
214
|
+
*/
|
|
215
|
+
async readLiteRows(environmentType, signal) {
|
|
216
|
+
const rows = [];
|
|
217
|
+
let cursor;
|
|
218
|
+
for (let page = 1; page <= LITE_PAGE_CAP; page++) {
|
|
219
|
+
throwIfAborted(signal);
|
|
220
|
+
const response = await this.contractServerClient.getDataProductsLitePaginated(LITE_PAGE_SIZE, environmentType, cursor?.id, cursor?.deploymentId, this.getAccessToken());
|
|
221
|
+
// a 200 carrying an error is no page; a page may leave out an empty
|
|
222
|
+
// list, as the lakehouse client and its model allow
|
|
223
|
+
const list = isPlainObject(response)
|
|
224
|
+
? response.liteDataProductsResponse
|
|
225
|
+
: undefined;
|
|
226
|
+
const products = isPlainObject(list)
|
|
227
|
+
? (list.dataProducts ?? [])
|
|
228
|
+
: undefined;
|
|
229
|
+
if (!Array.isArray(products)) {
|
|
230
|
+
throw new Error(V1_CUBE_DATA_PRODUCT_LIST_ERROR.UNREADABLE_PAGE);
|
|
231
|
+
}
|
|
232
|
+
rows.push(...products.filter(isPlainObject));
|
|
233
|
+
const metadata = response.paginationMetadataRecord;
|
|
234
|
+
if (!isPlainObject(metadata) || metadata.hasNextPage !== true) {
|
|
235
|
+
return rows;
|
|
236
|
+
}
|
|
237
|
+
const last = metadata.lastValuesMap;
|
|
238
|
+
const id = isPlainObject(last) ? last.id : undefined;
|
|
239
|
+
const deploymentId = toCursorDeploymentId(isPlainObject(last) ? last.deployment_id : undefined);
|
|
240
|
+
if (typeof id !== 'string' || !id || deploymentId === undefined) {
|
|
241
|
+
throw new Error(V1_CUBE_DATA_PRODUCT_LIST_ERROR.NO_CURSOR);
|
|
242
|
+
}
|
|
243
|
+
if (cursor?.id === id && cursor.deploymentId === deploymentId) {
|
|
244
|
+
throw new Error(V1_CUBE_DATA_PRODUCT_LIST_ERROR.REPEATED_CURSOR);
|
|
245
|
+
}
|
|
246
|
+
cursor = { id, deploymentId };
|
|
247
|
+
}
|
|
248
|
+
throw new Error(V1_CUBE_DATA_PRODUCT_LIST_ERROR.TOO_MANY_PAGES);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* The class's list, read once per page visit. A list whose search is
|
|
252
|
+
* dropped while it pages is forgotten at once, so the next search reads it
|
|
253
|
+
* again rather than waiting on the stopped one.
|
|
254
|
+
*/
|
|
255
|
+
listOf(environmentType, signal) {
|
|
256
|
+
const cached = this.lists.get(environmentType);
|
|
257
|
+
if (cached) {
|
|
258
|
+
return cached;
|
|
259
|
+
}
|
|
260
|
+
const list = this.readList(environmentType, signal);
|
|
261
|
+
const forget = () => {
|
|
262
|
+
if (this.lists.get(environmentType) === list) {
|
|
263
|
+
this.lists.delete(environmentType);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
const stopWatching = () => signal?.removeEventListener('abort', forget);
|
|
267
|
+
signal?.addEventListener('abort', forget, { once: true });
|
|
268
|
+
// a failed list is read again on the next search: forgotten before its failure is seen
|
|
269
|
+
list.then(stopWatching, () => {
|
|
270
|
+
forget();
|
|
271
|
+
stopWatching();
|
|
272
|
+
});
|
|
273
|
+
this.lists.set(environmentType, list);
|
|
274
|
+
return list;
|
|
275
|
+
}
|
|
276
|
+
/** The class's list, along its pages; a stopped one fails with why it was stopped */
|
|
277
|
+
async readList(environmentType, signal) {
|
|
278
|
+
try {
|
|
279
|
+
return (await this.readLiteRows(environmentType, signal))
|
|
280
|
+
.map((row) => toLiteCandidate(row, environmentType))
|
|
281
|
+
.filter(isNonNullable);
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
if (signal?.aborted) {
|
|
285
|
+
throw error;
|
|
286
|
+
}
|
|
287
|
+
throw new CubeEngineError(CubeEngineErrorKind.NETWORK, `Cube couldn't list the data products\n${toMessage(error)}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* The products the marketplace matches, in its order: the first page of a
|
|
292
|
+
* full text search in the class. A failed search fails; it never falls
|
|
293
|
+
* back to the lakehouse's list
|
|
294
|
+
*/
|
|
295
|
+
async searchMarketplace(marketplaceServerClient, search, signal) {
|
|
296
|
+
const { environmentType } = search;
|
|
297
|
+
try {
|
|
298
|
+
const response = await marketplaceServerClient.lakehouseAccessSearch(search.text.trim(), environmentType, {
|
|
299
|
+
searchType: SearchType.FULL_TEXT,
|
|
300
|
+
pageSize: SEARCH_PAGE_SIZE,
|
|
301
|
+
pageNumber: 1,
|
|
302
|
+
// every deployment, as the lite list gives, none hidden as a duplicate
|
|
303
|
+
showAll: true,
|
|
304
|
+
...(signal ? { signal } : {}),
|
|
305
|
+
});
|
|
306
|
+
// a 200 carrying an error is no page
|
|
307
|
+
const results = isPlainObject(response) ? response.results : undefined;
|
|
308
|
+
if (!Array.isArray(results)) {
|
|
309
|
+
throw new Error(V1_CUBE_DATA_PRODUCT_SEARCH_ERROR.UNREADABLE_PAGE);
|
|
310
|
+
}
|
|
311
|
+
const answer = results
|
|
312
|
+
.filter(isPlainObject)
|
|
313
|
+
.map((row) => toSearchRowCandidate(row, environmentType))
|
|
314
|
+
.filter(isNonNullable);
|
|
315
|
+
// counted before any row is dropped: a full page, or fewer rows than the matches
|
|
316
|
+
const metadata = response.metadata;
|
|
317
|
+
const totalCount = isPlainObject(metadata)
|
|
318
|
+
? metadata.total_count
|
|
319
|
+
: undefined;
|
|
320
|
+
if (results.length >= SEARCH_PAGE_SIZE ||
|
|
321
|
+
(typeof totalCount === 'number' && totalCount > results.length)) {
|
|
322
|
+
this.cutShortAnswers.add(answer);
|
|
323
|
+
}
|
|
324
|
+
return answer;
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
if (signal?.aborted) {
|
|
328
|
+
throw error;
|
|
329
|
+
}
|
|
330
|
+
throw new CubeEngineError(CubeEngineErrorKind.NETWORK, `Cube couldn't search the data products\n${toMessage(error)}`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
async search(search, signal) {
|
|
334
|
+
if (this.options.marketplaceServerClient) {
|
|
335
|
+
return this.searchMarketplace(this.options.marketplaceServerClient, search, signal);
|
|
336
|
+
}
|
|
337
|
+
const text = search.text.trim().toLowerCase();
|
|
338
|
+
return (await this.listOf(search.environmentType, signal)).filter((candidate) => [candidate.title, candidate.id, candidate.description ?? '']
|
|
339
|
+
.join('\n')
|
|
340
|
+
.toLowerCase()
|
|
341
|
+
.includes(text));
|
|
342
|
+
}
|
|
343
|
+
/** The product's deployed artifact: the generation file at its path */
|
|
344
|
+
async readArtifact(candidate) {
|
|
345
|
+
const project = new StoreProjectData();
|
|
346
|
+
project.groupId = candidate.groupId;
|
|
347
|
+
project.artifactId = candidate.artifactId;
|
|
348
|
+
const files = (await this.depotServerClient.getGenerationFilesByType(project, candidate.versionId, DATA_PRODUCT_GENERATION_TYPE, candidate.dataProductPath)).map((file) => StoredFileGeneration.serialization.fromJson(file));
|
|
349
|
+
const content = files.find((file) => file.path === candidate.dataProductPath)?.file.content;
|
|
350
|
+
if (content === undefined) {
|
|
351
|
+
throw new Error(`The data product ${candidate.dataProductPath} has no deployed artifact at ${candidate.groupId}:${candidate.artifactId}:${candidate.versionId}`);
|
|
352
|
+
}
|
|
353
|
+
return JSON.parse(content);
|
|
354
|
+
}
|
|
355
|
+
/** The product's definition at the deployed version */
|
|
356
|
+
async readDefinition(candidate) {
|
|
357
|
+
const entity = await this.depotServerClient.getVersionEntity(candidate.groupId, candidate.artifactId, candidate.versionId, candidate.dataProductPath);
|
|
358
|
+
return entity.content;
|
|
359
|
+
}
|
|
360
|
+
describe(candidate) {
|
|
361
|
+
const key = descriptionKey(candidate.groupId, candidate.artifactId, candidate.versionId, candidate.dataProductPath);
|
|
362
|
+
let description = this.descriptions.get(key);
|
|
363
|
+
if (!description) {
|
|
364
|
+
description = Promise.all([
|
|
365
|
+
this.readArtifact(candidate),
|
|
366
|
+
this.readDefinition(candidate),
|
|
367
|
+
])
|
|
368
|
+
.then(([artifact, definition]) => V1_readCubeDataProductDescription(candidate, artifact, definition, this.options.enterpriseStereotype))
|
|
369
|
+
.catch((error) => {
|
|
370
|
+
this.descriptions.delete(key);
|
|
371
|
+
throw new CubeEngineError(CubeEngineErrorKind.NETWORK, `Cube couldn't read the data product ${candidate.dataProductPath}\n${toMessage(error)}`);
|
|
372
|
+
});
|
|
373
|
+
this.descriptions.set(key, description);
|
|
374
|
+
}
|
|
375
|
+
return description;
|
|
376
|
+
}
|
|
377
|
+
async resolveSchemas(project, sources, options) {
|
|
378
|
+
if (options?.fresh) {
|
|
379
|
+
// read the products again, not what this visit read
|
|
380
|
+
sources.forEach(({ dataProduct }) => this.descriptions.delete(descriptionKey(project.groupId, project.artifactId, project.versionId, dataProduct)));
|
|
381
|
+
}
|
|
382
|
+
const resolved = new Map();
|
|
383
|
+
await Promise.all([...sources].map(async ([nodeId, location]) => {
|
|
384
|
+
try {
|
|
385
|
+
const description = await this.describe(new CubeDataProductCandidate({
|
|
386
|
+
id: location.dataProduct,
|
|
387
|
+
deploymentId: '',
|
|
388
|
+
dataProductPath: location.dataProduct,
|
|
389
|
+
title: location.dataProduct,
|
|
390
|
+
groupId: project.groupId,
|
|
391
|
+
artifactId: project.artifactId,
|
|
392
|
+
versionId: project.versionId,
|
|
393
|
+
environmentType: project.environmentType,
|
|
394
|
+
}));
|
|
395
|
+
const schema = V1_findCubeAccessPointSchema(description, location);
|
|
396
|
+
resolved.set(nodeId, typeof schema === 'string'
|
|
397
|
+
? new CubeEngineError(CubeEngineErrorKind.COMPILE, schema, nodeId)
|
|
398
|
+
: schema);
|
|
399
|
+
}
|
|
400
|
+
catch (error) {
|
|
401
|
+
resolved.set(nodeId, error instanceof CubeEngineError
|
|
402
|
+
? new CubeEngineError(error.kind, error.detail, nodeId)
|
|
403
|
+
: new CubeEngineError(CubeEngineErrorKind.NETWORK, toMessage(error), nodeId));
|
|
404
|
+
}
|
|
405
|
+
}));
|
|
406
|
+
return new Map([...sources.keys()].map((nodeId) => [
|
|
407
|
+
nodeId,
|
|
408
|
+
resolved.get(nodeId),
|
|
409
|
+
]));
|
|
410
|
+
}
|
|
411
|
+
/** The product's page in the host's marketplace, as the host builds it; none without one */
|
|
412
|
+
getMarketplaceLink(target) {
|
|
413
|
+
return this.options.marketplaceLink?.(target);
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* The viewer's access to each of the product's groups, as the marketplace
|
|
417
|
+
* shows it, from the viewer's contracts, read afresh each time: a group
|
|
418
|
+
* marked open to everyone needs none; otherwise the contract for that
|
|
419
|
+
* group of this deployment furthest along approval. A group with no
|
|
420
|
+
* contract has no access only when the host marks open groups, since it
|
|
421
|
+
* might be one otherwise
|
|
422
|
+
*/
|
|
423
|
+
async getAccess(candidate, signal) {
|
|
424
|
+
const { getCurrentUser, enterpriseStereotype } = this.options;
|
|
425
|
+
if (!getCurrentUser || !/^\d+$/u.test(candidate.deploymentId)) {
|
|
426
|
+
return new Map();
|
|
427
|
+
}
|
|
428
|
+
const deploymentId = Number(candidate.deploymentId);
|
|
429
|
+
const description = await this.describe(candidate);
|
|
430
|
+
throwIfAborted(signal);
|
|
431
|
+
let rows;
|
|
432
|
+
try {
|
|
433
|
+
rows = await this.contractServerClient.getContractsForUser(getCurrentUser(), this.getAccessToken());
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
throw new CubeEngineError(CubeEngineErrorKind.NETWORK, `Cube couldn't read your data contracts\n${toMessage(error)}`);
|
|
437
|
+
}
|
|
438
|
+
throwIfAborted(signal);
|
|
439
|
+
if (!Array.isArray(rows)) {
|
|
440
|
+
throw new CubeEngineError(CubeEngineErrorKind.NETWORK, "Cube couldn't read your data contracts\nThe lakehouse's answer isn't a list of contracts");
|
|
441
|
+
}
|
|
442
|
+
// a contract Cube can't read is left out, never failing the others
|
|
443
|
+
const contracts = rows.flatMap((row) => {
|
|
444
|
+
if (!isPlainObject(row) || !isPlainObject(row.contractResultLite)) {
|
|
445
|
+
return [];
|
|
446
|
+
}
|
|
447
|
+
try {
|
|
448
|
+
return [
|
|
449
|
+
deserialize(V1_liteDataContractWithUserStatusModelSchema([]), row),
|
|
450
|
+
];
|
|
451
|
+
}
|
|
452
|
+
catch {
|
|
453
|
+
return [];
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
const access = new Map();
|
|
457
|
+
description.groups.forEach((group) => {
|
|
458
|
+
if (group.isEnterprise) {
|
|
459
|
+
access.set(group.id, CubeAccessPointGroupAccess.ENTERPRISE);
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
const best = contracts
|
|
463
|
+
.filter(({ contractResultLite: contract }) => {
|
|
464
|
+
return (contract.resourceType === V1_ResourceType.ACCESS_POINT_GROUP &&
|
|
465
|
+
contract.accessPointGroup === group.id &&
|
|
466
|
+
contract.resourceId === candidate.id &&
|
|
467
|
+
contract.deploymentId === deploymentId);
|
|
468
|
+
})
|
|
469
|
+
.reduce((found, contract) => !found ||
|
|
470
|
+
(APPROVAL_STAGE[contract.status] ?? 0) >
|
|
471
|
+
(APPROVAL_STAGE[found.status] ?? 0)
|
|
472
|
+
? contract
|
|
473
|
+
: found, undefined);
|
|
474
|
+
if (best) {
|
|
475
|
+
access.set(group.id, toGroupAccess(best.status));
|
|
476
|
+
}
|
|
477
|
+
else if (enterpriseStereotype) {
|
|
478
|
+
access.set(group.id, CubeAccessPointGroupAccess.NO_ACCESS);
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
return access;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
//# sourceMappingURL=V1_LegendCubeDataProductCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V1_LegendCubeDataProductCatalog.js","sourceRoot":"","sources":["../../../../../src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
import { type IR, type ModelContext, type Schema } from '@finos/legend-cube';
|
|
17
17
|
import { V1_EngineServerClient } from '@finos/legend-graph';
|
|
18
18
|
import { type TracerService } from '@finos/legend-shared';
|
|
19
|
-
import
|
|
19
|
+
import type { CubeLakehouseEnvironment } from '../../../CubeLakehouseEnvironment.js';
|
|
20
|
+
import { type AccessorPath, type CubeEngine, CubeEngineError, type CubeModelOutline, type CubeParsedExpression, type CubeResult, type NodeId } from '../../../CubeEngine.js';
|
|
21
|
+
import { type V1_CubeIngestDefinitionSource } from './V1_CubeIngestModel.js';
|
|
20
22
|
/** The engine client's configuration, as the host gives it (legend-graph doesn't export its type) */
|
|
21
23
|
export type V1_CubeEngineConfig = ConstructorParameters<typeof V1_EngineServerClient>[0];
|
|
22
24
|
/** The message for a model of a kind this version can't run (PLAN §8.7) */
|
|
@@ -29,17 +31,109 @@ export declare const V1_unsupportedModelMessage: (type: string) => string;
|
|
|
29
31
|
*/
|
|
30
32
|
export declare class V1_LegendCubeEngine implements CubeEngine {
|
|
31
33
|
readonly client: V1_EngineServerClient;
|
|
32
|
-
|
|
34
|
+
/**
|
|
35
|
+
* The tables this session has read from direct connections, by connection
|
|
36
|
+
* and table: picking or re-checking a table reads it again, and typing and
|
|
37
|
+
* running reuse what was read
|
|
38
|
+
*/
|
|
39
|
+
private readonly directTables;
|
|
40
|
+
/** The viewer's lakehouse environment, which data product runs need */
|
|
41
|
+
private readonly lakehouseEnvironment;
|
|
42
|
+
/** The warehouse the viewer last picked, for a data product cube without its own */
|
|
43
|
+
private readonly getRememberedWarehouse;
|
|
44
|
+
/** The deployed ingest definitions, which ingest cubes read */
|
|
45
|
+
private readonly ingestDefinitions;
|
|
46
|
+
constructor(config: V1_CubeEngineConfig, tracerService: TracerService, options?: {
|
|
47
|
+
lakehouseEnvironment?: CubeLakehouseEnvironment | undefined;
|
|
48
|
+
getRememberedWarehouse?: (() => string | undefined) | undefined;
|
|
49
|
+
ingestDefinitions?: V1_CubeIngestDefinitionSource | undefined;
|
|
50
|
+
});
|
|
51
|
+
/** An ingest model's settings, or an unsupported-model error naming its problems */
|
|
52
|
+
private ingestSettingsOf;
|
|
53
|
+
/**
|
|
54
|
+
* The definitions the URNs name, read from the host's ingest servers, each
|
|
55
|
+
* once; a definition that can't be read gives its error instead
|
|
56
|
+
*/
|
|
57
|
+
private ingestDefinitionsOf;
|
|
58
|
+
/** A data product model's project, or an unsupported-model error naming its problems */
|
|
59
|
+
private dataProductProjectOf;
|
|
60
|
+
/**
|
|
61
|
+
* Checks a tables cube's model can be sent to the engine: Pure text, or a
|
|
62
|
+
* project pointer at a released version (PLAN §6.3); else an
|
|
63
|
+
* unsupported-model error
|
|
64
|
+
*/
|
|
65
|
+
private checkTablesModel;
|
|
33
66
|
/** The model's Pure text, or an unsupported-model error for any other kind */
|
|
34
67
|
private textOf;
|
|
68
|
+
/**
|
|
69
|
+
* A direct-connection model's connection, or an unsupported-model error when
|
|
70
|
+
* Cube can't use it (an imported cube then shows its saved schemas)
|
|
71
|
+
*/
|
|
72
|
+
private directConnectionOf;
|
|
73
|
+
/**
|
|
74
|
+
* The model a call on a direct-connection cube runs on, holding the tables
|
|
75
|
+
* it needs, and those its database doesn't have. Tables this session
|
|
76
|
+
* hasn't read are read in one call; `fresh` reads them all again
|
|
77
|
+
*/
|
|
78
|
+
private directContextFor;
|
|
35
79
|
loadModel(model: ModelContext): Promise<CubeModelOutline>;
|
|
36
80
|
resolveSchemas(model: ModelContext, accessors: ReadonlyMap<NodeId, AccessorPath>): Promise<Map<NodeId, Schema | CubeEngineError>>;
|
|
37
81
|
typeLambdas(model: ModelContext, lambdas: ReadonlyMap<NodeId, IR>): Promise<Map<NodeId, Schema | CubeEngineError>>;
|
|
38
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Types lambdas on a data product cube: on its project at its saved
|
|
84
|
+
* version, with no runtime. The open-source engine reads no data product,
|
|
85
|
+
* so there every lambda fails as the engine says
|
|
86
|
+
*/
|
|
87
|
+
private typeDataProduct;
|
|
88
|
+
/**
|
|
89
|
+
* Types lambdas on an ingest cube: on the definitions they read, as the
|
|
90
|
+
* ingest servers serve them, with no runtime. A lambda whose data sets
|
|
91
|
+
* can't be read on the cube, or whose definition can't be fetched, fails
|
|
92
|
+
* on its own node. The open-source engine reads no ingest definition
|
|
93
|
+
*/
|
|
94
|
+
private typeIngest;
|
|
95
|
+
/**
|
|
96
|
+
* Types lambdas on a direct-connection cube: the tables they use are read
|
|
97
|
+
* from its database in one call, then typed in one batch on the model built
|
|
98
|
+
* from them
|
|
99
|
+
*/
|
|
100
|
+
private typeDirect;
|
|
101
|
+
/** Types every lambda in one batch call on a text model: one entry per key, whatever fails */
|
|
39
102
|
private typeAll;
|
|
103
|
+
/** Types every lambda in one batch call on a model context: one entry per key, whatever fails */
|
|
104
|
+
private typeOn;
|
|
40
105
|
execute(model: ModelContext, executionLambda: IR, options?: {
|
|
41
106
|
abortController?: AbortController | undefined;
|
|
42
107
|
}): Promise<CubeResult>;
|
|
108
|
+
/**
|
|
109
|
+
* The model a run on a data product cube runs on (PLAN §6.8): its project at
|
|
110
|
+
* the saved version, and a lakehouse runtime at Cube's fixed path, in the
|
|
111
|
+
* viewer's environment, with the cube's warehouse, else the default
|
|
112
|
+
*/
|
|
113
|
+
private dataProductExecutionContext;
|
|
114
|
+
/**
|
|
115
|
+
* The model a run on an ingest cube runs on (PLAN §6.7): the definitions it
|
|
116
|
+
* reads, as the ingest servers serve them, and a lakehouse runtime at
|
|
117
|
+
* Cube's fixed path, in the environment of the cube's class, with the
|
|
118
|
+
* cube's warehouse, else the one the viewer last picked, else the default
|
|
119
|
+
*/
|
|
120
|
+
private ingestExecutionContext;
|
|
121
|
+
/**
|
|
122
|
+
* The model a run on a direct-connection cube runs on: the tables it uses,
|
|
123
|
+
* read from its database when this session hasn't read them. A run stopped
|
|
124
|
+
* meanwhile goes no further
|
|
125
|
+
*/
|
|
126
|
+
private directExecutionContext;
|
|
127
|
+
/**
|
|
128
|
+
* The model a run of the lambda runs on: the cube's, or the context its
|
|
129
|
+
* data products, ingest data sets or direct connection need. A lambda
|
|
130
|
+
* reading another kind of source is refused first
|
|
131
|
+
*/
|
|
132
|
+
private executionContextOf;
|
|
133
|
+
/** The body of a run, or of its plan, as text, so numbers keep every digit */
|
|
134
|
+
private executionBodyOf;
|
|
135
|
+
planLambda(model: ModelContext, executionLambda: IR): Promise<void>;
|
|
136
|
+
parseExpression(code: string, sourceId: string): Promise<CubeParsedExpression>;
|
|
43
137
|
renderPure(lambdaIR: IR): Promise<string>;
|
|
44
138
|
}
|
|
45
139
|
//# sourceMappingURL=V1_LegendCubeEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"V1_LegendCubeEngine.d.ts","sourceRoot":"","sources":["../../../../../src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,EAAE,EAEP,KAAK,YAAY,EACjB,KAAK,MAAM,EAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAkB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"V1_LegendCubeEngine.d.ts","sourceRoot":"","sources":["../../../../../src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts"],"names":[],"mappings":"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"}
|