@finos/legend-cube-builder 0.0.0-stage → 0.0.2
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/LICENSE +201 -0
- package/README.md +5 -2
- package/lib/__lib__/LegendCubeCommand.d.ts +26 -0
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeCommand.js +40 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts +19 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.js +27 -0
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -0
- package/lib/__lib__/LegendCubeLabels.d.ts +68 -0
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeLabels.js +109 -0
- package/lib/__lib__/LegendCubeLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +33 -0
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeTesting.js +34 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts +24 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.js +37 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +41 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.js +76 -0
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.d.ts +31 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.d.ts.map +1 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.js +102 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.js.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts +33 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.js +68 -0
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts +30 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -0
- package/lib/__test-utils__/CubeTestApplication.js +57 -0
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +41 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.js +85 -0
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -0
- package/lib/components/CubeButton.d.ts +20 -0
- package/lib/components/CubeButton.d.ts.map +1 -0
- package/lib/components/CubeButton.js +24 -0
- package/lib/components/CubeButton.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +31 -0
- package/lib/components/CubeEditor.d.ts.map +1 -0
- package/lib/components/CubeEditor.js +90 -0
- package/lib/components/CubeEditor.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts +23 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -0
- package/lib/components/CubeNodeIcon.js +32 -0
- package/lib/components/CubeNodeIcon.js.map +1 -0
- package/lib/components/canvas/CubeCanvas.d.ts +37 -0
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvas.js +135 -0
- package/lib/components/canvas/CubeCanvas.js.map +1 -0
- package/lib/components/canvas/CubeCanvasContext.d.ts +19 -0
- package/lib/components/canvas/CubeCanvasContext.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasContext.js +22 -0
- package/lib/components/canvas/CubeCanvasContext.js.map +1 -0
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts +28 -0
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasContextMenu.js +35 -0
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -0
- package/lib/components/canvas/CubeCanvasDnd.d.ts +43 -0
- package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasDnd.js +51 -0
- package/lib/components/canvas/CubeCanvasDnd.js.map +1 -0
- package/lib/components/canvas/CubeCanvasEdge.d.ts +24 -0
- package/lib/components/canvas/CubeCanvasEdge.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasEdge.js +33 -0
- package/lib/components/canvas/CubeCanvasEdge.js.map +1 -0
- package/lib/components/canvas/CubeCanvasElements.d.ts +64 -0
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasElements.js +96 -0
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -0
- package/lib/components/canvas/CubeCanvasLayout.d.ts +32 -0
- package/lib/components/canvas/CubeCanvasLayout.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasLayout.js +63 -0
- package/lib/components/canvas/CubeCanvasLayout.js.map +1 -0
- package/lib/components/canvas/CubeCanvasNode.d.ts +29 -0
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasNode.js +72 -0
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -0
- package/lib/components/editors/CubeColumnPicker.d.ts +40 -0
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -0
- package/lib/components/editors/CubeColumnPicker.js +51 -0
- package/lib/components/editors/CubeColumnPicker.js.map +1 -0
- package/lib/components/editors/CubeFilterEditor.d.ts +26 -0
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeFilterEditor.js +90 -0
- package/lib/components/editors/CubeFilterEditor.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts +26 -0
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeJoinEditor.js +76 -0
- package/lib/components/editors/CubeJoinEditor.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts +29 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.js +71 -0
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts +44 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.js +30 -0
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -0
- package/lib/components/editors/CubeSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSourceEditor.js +42 -0
- package/lib/components/editors/CubeSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeValueEditor.d.ts +40 -0
- package/lib/components/editors/CubeValueEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeValueEditor.js +177 -0
- package/lib/components/editors/CubeValueEditor.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts +23 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -0
- package/lib/components/grid/CubeGridRegion.js +94 -0
- package/lib/components/grid/CubeGridRegion.js.map +1 -0
- package/lib/components/grid/CubeGridValues.d.ts +25 -0
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -0
- package/lib/components/grid/CubeGridValues.js +95 -0
- package/lib/components/grid/CubeGridValues.js.map +1 -0
- package/lib/components/grid/CubeResultGrid.d.ts +26 -0
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -0
- package/lib/components/grid/CubeResultGrid.js +50 -0
- package/lib/components/grid/CubeResultGrid.js.map +1 -0
- package/lib/components/palette/CubePalette.d.ts +29 -0
- package/lib/components/palette/CubePalette.d.ts.map +1 -0
- package/lib/components/palette/CubePalette.js +73 -0
- package/lib/components/palette/CubePalette.js.map +1 -0
- package/lib/components/show-pure/CubeShowPureDialog.d.ts +23 -0
- package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -0
- package/lib/components/show-pure/CubeShowPureDialog.js +37 -0
- package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts +22 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.js +89 -0
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts +26 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +45 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -0
- package/lib/graph-manager/CubeEngine.d.ts +115 -0
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -0
- package/lib/graph-manager/CubeEngine.js +61 -0
- package/lib/graph-manager/CubeEngine.js.map +1 -0
- package/lib/graph-manager/CubeModelOutlineHelper.d.ts +25 -0
- package/lib/graph-manager/CubeModelOutlineHelper.d.ts.map +1 -0
- package/lib/graph-manager/CubeModelOutlineHelper.js +24 -0
- package/lib/graph-manager/CubeModelOutlineHelper.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +26 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +22 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts +27 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +76 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.d.ts +27 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.js +82 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts +32 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +195 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +20 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +121 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.d.ts +24 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.js +43 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +45 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +171 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +22 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +79 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -0
- package/lib/index.css +17 -0
- package/lib/index.css.map +1 -0
- package/lib/index.d.ts +25 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +24 -0
- package/lib/index.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +206 -0
- package/lib/stores/CubeEditorState.d.ts.map +1 -0
- package/lib/stores/CubeEditorState.js +551 -0
- package/lib/stores/CubeEditorState.js.map +1 -0
- package/lib/stores/CubeExecutionState.d.ts +67 -0
- package/lib/stores/CubeExecutionState.d.ts.map +1 -0
- package/lib/stores/CubeExecutionState.js +196 -0
- package/lib/stores/CubeExecutionState.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +31 -0
- package/lib/stores/CubeHost.d.ts.map +1 -0
- package/lib/stores/CubeHost.js +17 -0
- package/lib/stores/CubeHost.js.map +1 -0
- package/lib/stores/CubeNodeEditorState.d.ts +85 -0
- package/lib/stores/CubeNodeEditorState.d.ts.map +1 -0
- package/lib/stores/CubeNodeEditorState.js +207 -0
- package/lib/stores/CubeNodeEditorState.js.map +1 -0
- package/lib/stores/CubeShowPureState.d.ts +38 -0
- package/lib/stores/CubeShowPureState.d.ts.map +1 -0
- package/lib/stores/CubeShowPureState.js +83 -0
- package/lib/stores/CubeShowPureState.js.map +1 -0
- package/lib/stores/CubeSourcePickerState.d.ts +98 -0
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -0
- package/lib/stores/CubeSourcePickerState.js +334 -0
- package/lib/stores/CubeSourcePickerState.js.map +1 -0
- package/lib/stores/CubeSpecTransferState.d.ts +60 -0
- package/lib/stores/CubeSpecTransferState.d.ts.map +1 -0
- package/lib/stores/CubeSpecTransferState.js +167 -0
- package/lib/stores/CubeSpecTransferState.js.map +1 -0
- package/lib/stores/LocalModelCatalog.d.ts +37 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -0
- package/lib/stores/LocalModelCatalog.js +49 -0
- package/lib/stores/LocalModelCatalog.js.map +1 -0
- package/lib/stores/editors/CubeFilterDraft.d.ts +61 -0
- package/lib/stores/editors/CubeFilterDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeFilterDraft.js +186 -0
- package/lib/stores/editors/CubeFilterDraft.js.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts +63 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.js +136 -0
- package/lib/stores/editors/CubeJoinDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts +38 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.js +35 -0
- package/lib/stores/editors/CubeNodeDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +29 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.js +33 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts +23 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.js +338 -0
- package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -0
- package/package.json +81 -3
- package/src/__lib__/LegendCubeCommand.ts +44 -0
- package/src/__lib__/LegendCubeHelpText.ts +38 -0
- package/src/__lib__/LegendCubeLabels.ts +141 -0
- package/src/__lib__/LegendCubeTesting.ts +33 -0
- package/src/__test-utils__/CubeCanvasTestUtils.ts +53 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +137 -0
- package/src/__test-utils__/CubeNorthwindTestQueries.ts +165 -0
- package/src/__test-utils__/CubePageTestUtils.tsx +96 -0
- package/src/__test-utils__/CubeTestApplication.ts +82 -0
- package/src/__test-utils__/FakeCubeEngine.ts +139 -0
- package/src/components/CubeButton.tsx +35 -0
- package/src/components/CubeEditor.tsx +239 -0
- package/src/components/CubeNodeIcon.tsx +47 -0
- package/src/components/canvas/CubeCanvas.tsx +260 -0
- package/src/components/canvas/CubeCanvasContext.ts +31 -0
- package/src/components/canvas/CubeCanvasContextMenu.tsx +89 -0
- package/src/components/canvas/CubeCanvasDnd.ts +82 -0
- package/src/components/canvas/CubeCanvasEdge.tsx +57 -0
- package/src/components/canvas/CubeCanvasElements.ts +150 -0
- package/src/components/canvas/CubeCanvasLayout.ts +88 -0
- package/src/components/canvas/CubeCanvasNode.tsx +141 -0
- package/src/components/editors/CubeColumnPicker.tsx +114 -0
- package/src/components/editors/CubeFilterEditor.tsx +309 -0
- package/src/components/editors/CubeJoinEditor.tsx +224 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +204 -0
- package/src/components/editors/CubeNodeEditorRegistry.ts +61 -0
- package/src/components/editors/CubeSourceEditor.tsx +116 -0
- package/src/components/editors/CubeValueEditor.tsx +332 -0
- package/src/components/grid/CubeGridRegion.tsx +274 -0
- package/src/components/grid/CubeGridValues.ts +125 -0
- package/src/components/grid/CubeResultGrid.tsx +84 -0
- package/src/components/palette/CubePalette.tsx +177 -0
- package/src/components/show-pure/CubeShowPureDialog.tsx +101 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +304 -0
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +157 -0
- package/src/graph-manager/CubeEngine.ts +155 -0
- package/src/graph-manager/CubeModelOutlineHelper.ts +32 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +34 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +109 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.ts +115 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +257 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +157 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.ts +58 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +278 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +124 -0
- package/src/index.ts +41 -0
- package/src/stores/CubeEditorState.ts +702 -0
- package/src/stores/CubeExecutionState.ts +255 -0
- package/src/stores/CubeHost.ts +32 -0
- package/src/stores/CubeNodeEditorState.ts +255 -0
- package/src/stores/CubeShowPureState.ts +96 -0
- package/src/stores/CubeSourcePickerState.ts +426 -0
- package/src/stores/CubeSpecTransferState.ts +198 -0
- package/src/stores/LocalModelCatalog.ts +70 -0
- package/src/stores/editors/CubeFilterDraft.ts +241 -0
- package/src/stores/editors/CubeJoinDraft.ts +197 -0
- package/src/stores/editors/CubeNodeDraft.ts +46 -0
- package/src/stores/editors/CubeNodeDraftRegistry.ts +49 -0
- package/src/stores/fixtures/CubeNorthwindModel.ts +355 -0
- package/tsconfig.json +118 -0
|
@@ -0,0 +1,83 @@
|
|
|
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 { action, flow, makeObservable, observable } from 'mobx';
|
|
17
|
+
import { CubeEngineError, CubeEngineErrorKind, } from '../graph-manager/CubeEngine.js';
|
|
18
|
+
/**
|
|
19
|
+
* Show Pure: the Pure text of what Execute would run, the capture node's
|
|
20
|
+
* execution lambda with the row limit, as the engine renders it. For display
|
|
21
|
+
* only: the text is never parsed back (PLAN §8.7).
|
|
22
|
+
*/
|
|
23
|
+
export class CubeShowPureState {
|
|
24
|
+
editorState;
|
|
25
|
+
isOpen = false;
|
|
26
|
+
text;
|
|
27
|
+
/** Why the engine couldn't render the query; shown in the dialog */
|
|
28
|
+
error;
|
|
29
|
+
isRendering = false;
|
|
30
|
+
/** Counts renders, so one that finishes after the dialog closed is dropped */
|
|
31
|
+
request = 0;
|
|
32
|
+
constructor(editorState) {
|
|
33
|
+
makeObservable(this, {
|
|
34
|
+
isOpen: observable,
|
|
35
|
+
text: observable,
|
|
36
|
+
error: observable.ref,
|
|
37
|
+
isRendering: observable,
|
|
38
|
+
open: flow,
|
|
39
|
+
close: action,
|
|
40
|
+
});
|
|
41
|
+
this.editorState = editorState;
|
|
42
|
+
}
|
|
43
|
+
/** Opens the dialog and renders the query; does nothing when Execute can't run */
|
|
44
|
+
*open() {
|
|
45
|
+
const { execution, document, emitter, rowLimit, host } = this.editorState;
|
|
46
|
+
const runtime = document.context?.runtime;
|
|
47
|
+
if (!execution.canExecute || runtime === undefined) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const request = ++this.request;
|
|
51
|
+
this.isOpen = true;
|
|
52
|
+
this.text = undefined;
|
|
53
|
+
this.error = undefined;
|
|
54
|
+
this.isRendering = true;
|
|
55
|
+
try {
|
|
56
|
+
const text = (yield host.engine.renderPure(emitter.emitExecutionLambda({ rowLimit, runtime })));
|
|
57
|
+
if (request === this.request) {
|
|
58
|
+
this.text = text;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (request === this.request) {
|
|
63
|
+
this.error =
|
|
64
|
+
error instanceof CubeEngineError
|
|
65
|
+
? error
|
|
66
|
+
: new CubeEngineError(CubeEngineErrorKind.COMPILE, error instanceof Error ? error.message : String(error));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
if (request === this.request) {
|
|
71
|
+
this.isRendering = false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
close() {
|
|
76
|
+
this.request++;
|
|
77
|
+
this.isOpen = false;
|
|
78
|
+
this.isRendering = false;
|
|
79
|
+
this.text = undefined;
|
|
80
|
+
this.error = undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=CubeShowPureState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeShowPureState.js","sourceRoot":"","sources":["../../src/stores/CubeShowPureState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAChE,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAGxC;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACnB,WAAW,CAAkB;IAEtC,MAAM,GAAG,KAAK,CAAC;IACf,IAAI,CAAqB;IACzB,oEAAoE;IACpE,KAAK,CAA8B;IACnC,WAAW,GAAG,KAAK,CAAC;IACpB,8EAA8E;IACtE,OAAO,GAAG,CAAC,CAAC;IAEpB,YAAY,WAA4B;QACtC,cAAc,CAAC,IAAI,EAAE;YACnB,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,UAAU,CAAC,GAAG;YACrB,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,kFAAkF;IAClF,CAAC,IAAI;QACH,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CACxC,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CACnD,CAAW,CAAC;YACb,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK;oBACR,KAAK,YAAY,eAAe;wBAC9B,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,eAAe,CACjB,mBAAmB,CAAC,OAAO,EAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;YACV,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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 { type CubeContext, type ModelContext } from '@finos/legend-cube';
|
|
17
|
+
import { type GeneratorFn } from '@finos/legend-shared';
|
|
18
|
+
import { type CubeModelOutline, type CubeOutlineDatabase, type CubeOutlineRuntime, type CubeOutlineSchema, type CubeOutlineTable } from '../graph-manager/CubeEngine.js';
|
|
19
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
20
|
+
import { type BundledModel } from './LocalModelCatalog.js';
|
|
21
|
+
/** Whether a table can be picked: a table with a column Cube can't read can't */
|
|
22
|
+
export declare const isTableSelectable: (table: CubeOutlineTable) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The source picker (PLAN §6.2.7, Settled before M1.8): model, then database,
|
|
25
|
+
* then a runtime keyed by that database, then schema and table. A step with
|
|
26
|
+
* a single choice is picked automatically. The first table fixes the cube's
|
|
27
|
+
* model and runtime; later tables come from the same database and runtime.
|
|
28
|
+
* A table is added only once its schema has resolved.
|
|
29
|
+
*/
|
|
30
|
+
export declare class CubeSourcePickerState {
|
|
31
|
+
readonly editorState: CubeEditorState;
|
|
32
|
+
isOpen: boolean;
|
|
33
|
+
model: ModelContext | undefined;
|
|
34
|
+
/** The model is Pure text the user pastes, not a bundled one */
|
|
35
|
+
isPastingModel: boolean;
|
|
36
|
+
pastedModelText: string;
|
|
37
|
+
/** The model the paste box last loaded: only it keeps the box shown */
|
|
38
|
+
private pastedModel;
|
|
39
|
+
outline: CubeModelOutline | undefined;
|
|
40
|
+
isLoadingModel: boolean;
|
|
41
|
+
databasePath: string | undefined;
|
|
42
|
+
runtimePath: string | undefined;
|
|
43
|
+
schemaName: string | undefined;
|
|
44
|
+
tableName: string | undefined;
|
|
45
|
+
tableSearch: string;
|
|
46
|
+
isResolving: boolean;
|
|
47
|
+
/** Why the outline or the table couldn't be loaded, shown in the dialog */
|
|
48
|
+
error: string | undefined;
|
|
49
|
+
/** Counts Add presses: closing the dialog moves it on, so the pending Add is dropped */
|
|
50
|
+
private confirmRequest;
|
|
51
|
+
constructor(editorState: CubeEditorState);
|
|
52
|
+
get models(): readonly BundledModel[];
|
|
53
|
+
/** Once the cube has a model, every table comes from it */
|
|
54
|
+
get fixedContext(): CubeContext | undefined;
|
|
55
|
+
/** Once the cube has a table, every other one comes from its database */
|
|
56
|
+
get fixedDatabasePath(): string | undefined;
|
|
57
|
+
get databases(): readonly CubeOutlineDatabase[];
|
|
58
|
+
get runtimes(): readonly CubeOutlineRuntime[];
|
|
59
|
+
get schemas(): readonly CubeOutlineSchema[];
|
|
60
|
+
/** The schema's tables, views left out, filtered by the search text */
|
|
61
|
+
get tables(): readonly CubeOutlineTable[];
|
|
62
|
+
get canConfirm(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Opens the dialog on the cube's model, or on the only model offered. A
|
|
65
|
+
* model whose outline failed to load is loaded again. Does nothing while
|
|
66
|
+
* the cube is read-only.
|
|
67
|
+
*/
|
|
68
|
+
open(): void;
|
|
69
|
+
/** Closes the dialog; a table still being typed is not added */
|
|
70
|
+
close(): void;
|
|
71
|
+
/** Offers a text box for a Pure model in place of the bundled ones */
|
|
72
|
+
startPastingModel(): void;
|
|
73
|
+
setPastedModelText(text: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Loads the pasted Pure text as the model: the cube will hold the text
|
|
76
|
+
* itself, so it counts towards the size a saved cube can have
|
|
77
|
+
*/
|
|
78
|
+
loadPastedModel(): GeneratorFn<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Loads a model's outline. Any model but the one the paste box loaded ends
|
|
81
|
+
* pasting, e.g. a bundled model, or the model of a cube opened meanwhile.
|
|
82
|
+
*/
|
|
83
|
+
selectModel(model: ModelContext): GeneratorFn<void>;
|
|
84
|
+
selectDatabase(path: string | undefined): void;
|
|
85
|
+
selectRuntime(path: string | undefined): void;
|
|
86
|
+
selectSchema(name: string | undefined): void;
|
|
87
|
+
selectTable(name: string | undefined): void;
|
|
88
|
+
setTableSearch(search: string): void;
|
|
89
|
+
/**
|
|
90
|
+
* Types the picked table with the engine, then adds it; the first table
|
|
91
|
+
* also sets the cube's model and runtime, in the same undo step. The cube
|
|
92
|
+
* may have changed while the engine answered: the table is added only if
|
|
93
|
+
* the cube still has the same model and runtime and can take it.
|
|
94
|
+
*/
|
|
95
|
+
confirm(): GeneratorFn<void>;
|
|
96
|
+
private resetFrom;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=CubeSourcePickerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSourcePickerState.d.ts","sourceRoot":"","sources":["../../src/stores/CubeSourcePickerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,YAAY,EAGlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAS3E,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,wBAAwB,CAAC;AAO5E,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,GAAI,OAAO,gBAAgB,KAAG,OACV,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC,MAAM,UAAS;IACf,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,cAAc,UAAS;IACvB,eAAe,SAAM;IACrB,uEAAuE;IACvE,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,cAAc,UAAS;IACvB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,SAAM;IACjB,WAAW,UAAS;IACpB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,wFAAwF;IACxF,OAAO,CAAC,cAAc,CAAK;gBAEf,WAAW,EAAE,eAAe;IAsCxC,IAAI,MAAM,IAAI,SAAS,YAAY,EAAE,CAEpC;IAED,2DAA2D;IAC3D,IAAI,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1C;IAED,yEAAyE;IACzE,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAK1C;IAED,IAAI,SAAS,IAAI,SAAS,mBAAmB,EAAE,CAa9C;IAED,IAAI,QAAQ,IAAI,SAAS,kBAAkB,EAAE,CAQ5C;IAED,IAAI,OAAO,IAAI,SAAS,iBAAiB,EAAE,CAK1C;IAED,uEAAuE;IACvE,IAAI,MAAM,IAAI,SAAS,gBAAgB,EAAE,CAUxC;IAED,IAAI,UAAU,IAAI,OAAO,CAYxB;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI;IA8BZ,gEAAgE;IAChE,KAAK,IAAI,IAAI;IAMb,sEAAsE;IACtE,iBAAiB,IAAI,IAAI;IASzB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC;;;OAGG;IACF,eAAe,IAAI,WAAW,CAAC,IAAI,CAAC;IAOrC;;;OAGG;IACF,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC;IA8BpD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAa9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK5C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK3C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACF,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC;IA6E7B,OAAO,CAAC,SAAS;CAWlB"}
|
|
@@ -0,0 +1,334 @@
|
|
|
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 { getRelationalDisplayName, RELATIONAL_TABLE_SOURCE_DEFINITION, RelationalTableSource, } from '@finos/legend-cube';
|
|
17
|
+
import { assertErrorThrown } from '@finos/legend-shared';
|
|
18
|
+
import { action, computed, flow, flowResult, makeObservable, observable, } from 'mobx';
|
|
19
|
+
import { CubeEngineError, CubeEngineErrorKind, CubeTableFlag, } from '../graph-manager/CubeEngine.js';
|
|
20
|
+
import { getRuntimesForDatabase } from '../graph-manager/CubeModelOutlineHelper.js';
|
|
21
|
+
import { createTextModel } from './LocalModelCatalog.js';
|
|
22
|
+
const toMessage = (error) => {
|
|
23
|
+
assertErrorThrown(error);
|
|
24
|
+
return error instanceof CubeEngineError ? error.firstLine : error.message;
|
|
25
|
+
};
|
|
26
|
+
/** Whether a table can be picked: a table with a column Cube can't read can't */
|
|
27
|
+
export const isTableSelectable = (table) => !table.flags.includes(CubeTableFlag.UNAVAILABLE);
|
|
28
|
+
/**
|
|
29
|
+
* The source picker (PLAN §6.2.7, Settled before M1.8): model, then database,
|
|
30
|
+
* then a runtime keyed by that database, then schema and table. A step with
|
|
31
|
+
* a single choice is picked automatically. The first table fixes the cube's
|
|
32
|
+
* model and runtime; later tables come from the same database and runtime.
|
|
33
|
+
* A table is added only once its schema has resolved.
|
|
34
|
+
*/
|
|
35
|
+
export class CubeSourcePickerState {
|
|
36
|
+
editorState;
|
|
37
|
+
isOpen = false;
|
|
38
|
+
model;
|
|
39
|
+
/** The model is Pure text the user pastes, not a bundled one */
|
|
40
|
+
isPastingModel = false;
|
|
41
|
+
pastedModelText = '';
|
|
42
|
+
/** The model the paste box last loaded: only it keeps the box shown */
|
|
43
|
+
pastedModel;
|
|
44
|
+
outline;
|
|
45
|
+
isLoadingModel = false;
|
|
46
|
+
databasePath;
|
|
47
|
+
runtimePath;
|
|
48
|
+
schemaName;
|
|
49
|
+
tableName;
|
|
50
|
+
tableSearch = '';
|
|
51
|
+
isResolving = false;
|
|
52
|
+
/** Why the outline or the table couldn't be loaded, shown in the dialog */
|
|
53
|
+
error;
|
|
54
|
+
/** Counts Add presses: closing the dialog moves it on, so the pending Add is dropped */
|
|
55
|
+
confirmRequest = 0;
|
|
56
|
+
constructor(editorState) {
|
|
57
|
+
makeObservable(this, {
|
|
58
|
+
isOpen: observable,
|
|
59
|
+
model: observable.ref,
|
|
60
|
+
isPastingModel: observable,
|
|
61
|
+
pastedModelText: observable,
|
|
62
|
+
outline: observable.ref,
|
|
63
|
+
isLoadingModel: observable,
|
|
64
|
+
databasePath: observable,
|
|
65
|
+
runtimePath: observable,
|
|
66
|
+
schemaName: observable,
|
|
67
|
+
tableName: observable,
|
|
68
|
+
tableSearch: observable,
|
|
69
|
+
isResolving: observable,
|
|
70
|
+
error: observable,
|
|
71
|
+
fixedContext: computed,
|
|
72
|
+
fixedDatabasePath: computed,
|
|
73
|
+
databases: computed,
|
|
74
|
+
runtimes: computed,
|
|
75
|
+
schemas: computed,
|
|
76
|
+
tables: computed,
|
|
77
|
+
canConfirm: computed,
|
|
78
|
+
open: action,
|
|
79
|
+
close: action,
|
|
80
|
+
selectDatabase: action,
|
|
81
|
+
selectRuntime: action,
|
|
82
|
+
selectSchema: action,
|
|
83
|
+
selectTable: action,
|
|
84
|
+
setTableSearch: action,
|
|
85
|
+
startPastingModel: action,
|
|
86
|
+
setPastedModelText: action,
|
|
87
|
+
selectModel: flow,
|
|
88
|
+
loadPastedModel: flow,
|
|
89
|
+
confirm: flow,
|
|
90
|
+
});
|
|
91
|
+
this.editorState = editorState;
|
|
92
|
+
}
|
|
93
|
+
get models() {
|
|
94
|
+
return this.editorState.host.modelCatalog.models;
|
|
95
|
+
}
|
|
96
|
+
/** Once the cube has a model, every table comes from it */
|
|
97
|
+
get fixedContext() {
|
|
98
|
+
return this.editorState.document.context;
|
|
99
|
+
}
|
|
100
|
+
/** Once the cube has a table, every other one comes from its database */
|
|
101
|
+
get fixedDatabasePath() {
|
|
102
|
+
return this.editorState.document.query.nodes.find((node) => node instanceof RelationalTableSource)?.database;
|
|
103
|
+
}
|
|
104
|
+
get databases() {
|
|
105
|
+
const databases = this.outline?.databases ?? [];
|
|
106
|
+
const fixedRuntime = this.fixedContext?.runtime;
|
|
107
|
+
return databases.filter((database) => (this.fixedDatabasePath === undefined ||
|
|
108
|
+
database.path === this.fixedDatabasePath) &&
|
|
109
|
+
(fixedRuntime === undefined ||
|
|
110
|
+
(this.outline &&
|
|
111
|
+
getRuntimesForDatabase(this.outline, database.path).some((runtime) => runtime.path === fixedRuntime))));
|
|
112
|
+
}
|
|
113
|
+
get runtimes() {
|
|
114
|
+
if (!this.outline || this.databasePath === undefined) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
const fixedRuntime = this.fixedContext?.runtime;
|
|
118
|
+
return getRuntimesForDatabase(this.outline, this.databasePath).filter((runtime) => fixedRuntime === undefined || runtime.path === fixedRuntime);
|
|
119
|
+
}
|
|
120
|
+
get schemas() {
|
|
121
|
+
return (this.databases.find((database) => database.path === this.databasePath)
|
|
122
|
+
?.schemas ?? []);
|
|
123
|
+
}
|
|
124
|
+
/** The schema's tables, views left out, filtered by the search text */
|
|
125
|
+
get tables() {
|
|
126
|
+
const search = this.tableSearch.trim().toLowerCase();
|
|
127
|
+
return (this.schemas.find((schema) => schema.name === this.schemaName)?.tables ??
|
|
128
|
+
[]).filter((table) => !table.isView &&
|
|
129
|
+
getRelationalDisplayName(table.name).toLowerCase().includes(search));
|
|
130
|
+
}
|
|
131
|
+
get canConfirm() {
|
|
132
|
+
const table = this.tables.find((candidate) => candidate.name === this.tableName);
|
|
133
|
+
return (!this.isLoadingModel &&
|
|
134
|
+
!this.isResolving &&
|
|
135
|
+
this.model !== undefined &&
|
|
136
|
+
this.runtimePath !== undefined &&
|
|
137
|
+
table !== undefined &&
|
|
138
|
+
isTableSelectable(table));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Opens the dialog on the cube's model, or on the only model offered. A
|
|
142
|
+
* model whose outline failed to load is loaded again. Does nothing while
|
|
143
|
+
* the cube is read-only.
|
|
144
|
+
*/
|
|
145
|
+
open() {
|
|
146
|
+
if (this.editorState.readOnly) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
this.isOpen = true;
|
|
150
|
+
this.error = undefined;
|
|
151
|
+
const model = this.fixedContext?.model ??
|
|
152
|
+
(this.models.length === 1 && !this.isPastingModel
|
|
153
|
+
? this.models[0]?.model
|
|
154
|
+
: this.model);
|
|
155
|
+
if (!model) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (model !== this.model || !this.outline) {
|
|
159
|
+
flowResult(this.selectModel(model)).catch(this.editorState.host.applicationStore.alertUnhandledError);
|
|
160
|
+
}
|
|
161
|
+
else if (this.databasePath !== undefined &&
|
|
162
|
+
!this.databases.some((database) => database.path === this.databasePath)) {
|
|
163
|
+
// the cube changed since the last pick, e.g. by undo
|
|
164
|
+
const [onlyDatabase, ...otherDatabases] = this.databases;
|
|
165
|
+
this.selectDatabase(onlyDatabase && !otherDatabases.length ? onlyDatabase.path : undefined);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Closes the dialog; a table still being typed is not added */
|
|
169
|
+
close() {
|
|
170
|
+
this.isOpen = false;
|
|
171
|
+
this.confirmRequest++;
|
|
172
|
+
this.isResolving = false;
|
|
173
|
+
}
|
|
174
|
+
/** Offers a text box for a Pure model in place of the bundled ones */
|
|
175
|
+
startPastingModel() {
|
|
176
|
+
this.isPastingModel = true;
|
|
177
|
+
this.model = undefined;
|
|
178
|
+
this.outline = undefined;
|
|
179
|
+
this.error = undefined;
|
|
180
|
+
this.isLoadingModel = false;
|
|
181
|
+
this.resetFrom('database');
|
|
182
|
+
}
|
|
183
|
+
setPastedModelText(text) {
|
|
184
|
+
this.pastedModelText = text;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Loads the pasted Pure text as the model: the cube will hold the text
|
|
188
|
+
* itself, so it counts towards the size a saved cube can have
|
|
189
|
+
*/
|
|
190
|
+
*loadPastedModel() {
|
|
191
|
+
if (this.pastedModelText.trim()) {
|
|
192
|
+
this.pastedModel = createTextModel(this.pastedModelText);
|
|
193
|
+
yield flowResult(this.selectModel(this.pastedModel));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Loads a model's outline. Any model but the one the paste box loaded ends
|
|
198
|
+
* pasting, e.g. a bundled model, or the model of a cube opened meanwhile.
|
|
199
|
+
*/
|
|
200
|
+
*selectModel(model) {
|
|
201
|
+
this.isPastingModel = model === this.pastedModel;
|
|
202
|
+
this.model = model;
|
|
203
|
+
this.outline = undefined;
|
|
204
|
+
this.error = undefined;
|
|
205
|
+
this.resetFrom('database');
|
|
206
|
+
this.isLoadingModel = true;
|
|
207
|
+
try {
|
|
208
|
+
const outline = (yield this.editorState.host.modelCatalog.loadOutline(model));
|
|
209
|
+
if (this.model !== model) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
this.outline = outline;
|
|
213
|
+
const [onlyDatabase, ...otherDatabases] = this.databases;
|
|
214
|
+
if (onlyDatabase && !otherDatabases.length) {
|
|
215
|
+
this.selectDatabase(onlyDatabase.path);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
if (this.model === model) {
|
|
220
|
+
this.error = toMessage(error);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
if (this.model === model) {
|
|
225
|
+
this.isLoadingModel = false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
selectDatabase(path) {
|
|
230
|
+
this.databasePath = path;
|
|
231
|
+
this.resetFrom('runtime');
|
|
232
|
+
const [onlyRuntime, ...otherRuntimes] = this.runtimes;
|
|
233
|
+
if (onlyRuntime && !otherRuntimes.length) {
|
|
234
|
+
this.runtimePath = onlyRuntime.path;
|
|
235
|
+
}
|
|
236
|
+
const [onlySchema, ...otherSchemas] = this.schemas;
|
|
237
|
+
if (onlySchema && !otherSchemas.length) {
|
|
238
|
+
this.schemaName = onlySchema.name;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
selectRuntime(path) {
|
|
242
|
+
this.runtimePath = path;
|
|
243
|
+
}
|
|
244
|
+
selectSchema(name) {
|
|
245
|
+
this.schemaName = name;
|
|
246
|
+
this.resetFrom('table');
|
|
247
|
+
}
|
|
248
|
+
selectTable(name) {
|
|
249
|
+
this.tableName = name;
|
|
250
|
+
this.error = undefined;
|
|
251
|
+
}
|
|
252
|
+
setTableSearch(search) {
|
|
253
|
+
this.tableSearch = search;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Types the picked table with the engine, then adds it; the first table
|
|
257
|
+
* also sets the cube's model and runtime, in the same undo step. The cube
|
|
258
|
+
* may have changed while the engine answered: the table is added only if
|
|
259
|
+
* the cube still has the same model and runtime and can take it.
|
|
260
|
+
*/
|
|
261
|
+
*confirm() {
|
|
262
|
+
if (!this.canConfirm) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const { editorState } = this;
|
|
266
|
+
const model = this.model;
|
|
267
|
+
const runtime = this.runtimePath;
|
|
268
|
+
const coordinates = {
|
|
269
|
+
database: this.databasePath,
|
|
270
|
+
schema: this.schemaName,
|
|
271
|
+
table: this.tableName,
|
|
272
|
+
};
|
|
273
|
+
const contextBefore = editorState.document.context;
|
|
274
|
+
// the engine stamps the table's accessor with its node id, so the id comes first
|
|
275
|
+
const id = editorState.document.query.generateId(RelationalTableSource.TYPE);
|
|
276
|
+
const request = ++this.confirmRequest;
|
|
277
|
+
this.isResolving = true;
|
|
278
|
+
this.error = undefined;
|
|
279
|
+
try {
|
|
280
|
+
const typed = (yield editorState.host.engine.resolveSchemas(model, new Map([
|
|
281
|
+
[id, [coordinates.database, coordinates.schema, coordinates.table]],
|
|
282
|
+
])));
|
|
283
|
+
if (request !== this.confirmRequest) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const schema = typed.get(id);
|
|
287
|
+
if (schema === undefined || schema instanceof CubeEngineError) {
|
|
288
|
+
throw (schema ??
|
|
289
|
+
new CubeEngineError(CubeEngineErrorKind.COMPILE, `The engine gave no schema for this table`));
|
|
290
|
+
}
|
|
291
|
+
const node = RELATIONAL_TABLE_SOURCE_DEFINITION.resolve(RELATIONAL_TABLE_SOURCE_DEFINITION.fromCoordinates(id, coordinates), { kind: 'resolved', schema });
|
|
292
|
+
const { document } = editorState;
|
|
293
|
+
if (document.context !== contextBefore || !document.query.canAdd(node)) {
|
|
294
|
+
throw new Error(`The cube changed while the table was loading; pick the table again.`);
|
|
295
|
+
}
|
|
296
|
+
const query = document.query.add(node);
|
|
297
|
+
// the first table sets the model and runtime; a cube saved with a model
|
|
298
|
+
// but no runtime takes the picked runtime and keeps the rest
|
|
299
|
+
editorState.applyDocument(document.context?.runtime !== undefined
|
|
300
|
+
? document.withQuery(query)
|
|
301
|
+
: document
|
|
302
|
+
.withContext({
|
|
303
|
+
...document.context,
|
|
304
|
+
model: document.context?.model ?? model,
|
|
305
|
+
runtime,
|
|
306
|
+
})
|
|
307
|
+
.withQuery(query));
|
|
308
|
+
this.isOpen = false;
|
|
309
|
+
this.resetFrom('table');
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
if (request === this.confirmRequest) {
|
|
313
|
+
this.error = toMessage(error);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
if (request === this.confirmRequest) {
|
|
318
|
+
this.isResolving = false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
resetFrom(step) {
|
|
323
|
+
if (step === 'database') {
|
|
324
|
+
this.databasePath = undefined;
|
|
325
|
+
}
|
|
326
|
+
if (step === 'database' || step === 'runtime') {
|
|
327
|
+
this.runtimePath = undefined;
|
|
328
|
+
this.schemaName = undefined;
|
|
329
|
+
}
|
|
330
|
+
this.tableName = undefined;
|
|
331
|
+
this.tableSearch = '';
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=CubeSourcePickerState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSourcePickerState.js","sourceRoot":"","sources":["../../src/stores/CubeSourcePickerState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 { type GeneratorFn } from '@finos/legend-shared';
|
|
17
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
18
|
+
export declare enum CUBE_SPEC_TRANSFER_MODE {
|
|
19
|
+
EXPORT = "export",
|
|
20
|
+
IMPORT = "import"
|
|
21
|
+
}
|
|
22
|
+
/** Why a spec can't be imported; a broken document names the path of the problem */
|
|
23
|
+
export declare const getSpecImportError: (error: unknown) => string;
|
|
24
|
+
/** A file name for a cube's spec, from its name */
|
|
25
|
+
export declare const getCubeSpecFileName: (name: string | undefined) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Export and import of the saved spec (PLAN §10.3), the only way to keep a
|
|
28
|
+
* cube until the Cube store (M8). Both are developer tools for now, labelled
|
|
29
|
+
* "(dev)" (Settled before M1.8).
|
|
30
|
+
*/
|
|
31
|
+
export declare class CubeSpecTransferState {
|
|
32
|
+
readonly editorState: CubeEditorState;
|
|
33
|
+
mode: CUBE_SPEC_TRANSFER_MODE | undefined;
|
|
34
|
+
/** The spec to export, once written */
|
|
35
|
+
exportText: string | undefined;
|
|
36
|
+
/** The spec text to import, pasted or read from a file */
|
|
37
|
+
importText: string;
|
|
38
|
+
/** Why the export or the import failed */
|
|
39
|
+
error: string | undefined;
|
|
40
|
+
isReadingFile: boolean;
|
|
41
|
+
/** Counts file reads, so a read that finishes after another starts is dropped */
|
|
42
|
+
private fileRequest;
|
|
43
|
+
constructor(editorState: CubeEditorState);
|
|
44
|
+
/** Writes the cube's spec, invalid queries included; a spec over the size cap is refused */
|
|
45
|
+
openExport(): void;
|
|
46
|
+
openImport(): void;
|
|
47
|
+
close(): void;
|
|
48
|
+
setImportText(text: string): void;
|
|
49
|
+
copyExport(): Promise<void>;
|
|
50
|
+
downloadExport(): void;
|
|
51
|
+
/** Reads a spec file into the import text; a file over the size cap is refused unread */
|
|
52
|
+
readImportFile(file: File): GeneratorFn<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Opens the spec in place of the cube, as one undo step, and never runs it.
|
|
55
|
+
* A spec that can't be read leaves the cube as it was and says why: a
|
|
56
|
+
* broken document names the path of the problem, e.g. `query.nodes[2].database`.
|
|
57
|
+
*/
|
|
58
|
+
importSpec(): boolean;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=CubeSpecTransferState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSpecTransferState.d.ts","sourceRoot":"","sources":["../../src/stores/CubeSpecTransferState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,oBAAY,uBAAuB;IACjC,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAKD,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,MAKC,CAAC;AAEtD,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,GAAG,SAAS,KAAG,MAG9D,CAAC;AAEF;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC1C,uCAAuC;IACvC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0DAA0D;IAC1D,UAAU,SAAM;IAChB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,aAAa,UAAS;IACtB,iFAAiF;IACjF,OAAO,CAAC,WAAW,CAAK;gBAEZ,WAAW,EAAE,eAAe;IAkBxC,4FAA4F;IAC5F,UAAU,IAAI,IAAI;IAYlB,UAAU,IAAI,IAAI;IAOlB,KAAK,IAAI,IAAI;IASb,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,cAAc,IAAI,IAAI;IAUtB,yFAAyF;IACxF,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAkC9C;;;;OAIG;IACH,UAAU,IAAI,OAAO;CActB"}
|