@finos/legend-cube-builder 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -3
- package/docs/adding-an-operation.md +22 -12
- package/docs/demo/DEMO-FAST-NOTES.md +67 -0
- package/docs/demo/README.md +102 -0
- package/docs/demo/specs/duckdb-sales-pivot.cube.json +110 -0
- package/docs/demo/specs/trades-desks-1-joined.cube.json +123 -0
- package/docs/demo/specs/trades-desks-2-grouped.cube.json +140 -0
- package/docs/demo/specs/trades-desks-3-ranked.cube.json +158 -0
- package/docs/demo/specs/trades-desks-4-extended.cube.json +208 -0
- package/docs/demo/specs/trades-desks-5-final.cube.json +248 -0
- package/docs/hosting.md +50 -3
- package/docs/testing.md +32 -0
- package/lib/__lib__/LegendCubeCommand.d.ts +2 -0
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeCommand.js +7 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -1
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeHelpText.js +14 -2
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
- package/lib/__lib__/LegendCubeLabels.d.ts +100 -8
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +129 -14
- package/lib/__lib__/LegendCubeLabels.js.map +1 -1
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
- package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +7 -0
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeTesting.js +7 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +2 -2
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +8 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.js +20 -3
- package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts +6 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.js +21 -0
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts +9 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.js +16 -0
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.d.ts +5 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.js +17 -0
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +7 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.js +16 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -1
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
- package/lib/components/CubeAddItems.d.ts.map +1 -1
- package/lib/components/CubeAddItems.js +9 -6
- package/lib/components/CubeAddItems.js.map +1 -1
- package/lib/components/CubeDialogTheme.d.ts +25 -0
- package/lib/components/CubeDialogTheme.d.ts.map +1 -0
- package/lib/components/CubeDialogTheme.js +25 -0
- package/lib/components/CubeDialogTheme.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +12 -1
- package/lib/components/CubeEditor.d.ts.map +1 -1
- package/lib/components/CubeEditor.js +16 -14
- package/lib/components/CubeEditor.js.map +1 -1
- package/lib/components/CubeFileMenu.d.ts +28 -0
- package/lib/components/CubeFileMenu.d.ts.map +1 -0
- package/lib/components/CubeFileMenu.js +77 -0
- package/lib/components/CubeFileMenu.js.map +1 -0
- package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
- package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
- package/lib/components/CubeLambdaImportBanner.js +47 -0
- package/lib/components/CubeLambdaImportBanner.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -1
- package/lib/components/CubeNodeIcon.js +5 -1
- package/lib/components/CubeNodeIcon.js.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.js +2 -2
- package/lib/components/CubeSchemaColumnsTable.js.map +1 -1
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvas.js +38 -5
- package/lib/components/canvas/CubeCanvas.js.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js +2 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +58 -3
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
- package/lib/components/canvas/CubeCanvasLayout.js +1 -1
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.js +8 -4
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
- package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
- package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
- package/lib/components/dev-settings/CubeDevSettings.js +50 -0
- package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnChecklist.js +2 -2
- package/lib/components/editors/CubeColumnChecklist.js.map +1 -1
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnPicker.js +3 -3
- package/lib/components/editors/CubeColumnPicker.js.map +1 -1
- package/lib/components/editors/CubeConcatEditor.js +2 -2
- package/lib/components/editors/CubeConcatEditor.js.map +1 -1
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js +83 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
- package/lib/components/editors/CubeExtendEditor.d.ts +2 -0
- package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeExtendEditor.js +3 -3
- package/lib/components/editors/CubeExtendEditor.js.map +1 -1
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeFilterEditor.js +13 -2
- package/lib/components/editors/CubeFilterEditor.js.map +1 -1
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +16 -4
- package/lib/components/editors/CubeJoinEditor.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.js +18 -8
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts +5 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.js +10 -2
- package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js +9 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
- package/lib/components/editors/CubePivotEditor.d.ts +26 -0
- package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePivotEditor.js +93 -0
- package/lib/components/editors/CubePivotEditor.js.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.js +2 -2
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
- package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
- package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
- package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.js +77 -0
- package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
- package/lib/components/grid/CubeGridRegion.js +40 -26
- package/lib/components/grid/CubeGridRegion.js.map +1 -1
- package/lib/components/grid/CubeGridValues.d.ts +31 -1
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
- package/lib/components/grid/CubeGridValues.js +108 -1
- package/lib/components/grid/CubeGridValues.js.map +1 -1
- package/lib/components/grid/CubeResultGrid.d.ts +68 -5
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +308 -35
- package/lib/components/grid/CubeResultGrid.js.map +1 -1
- package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
- package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
- package/lib/components/grid/CubeRunStatsPanel.js +61 -0
- package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.js +114 -0
- package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
- package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
- package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlDialog.js +39 -0
- package/lib/components/grid/CubeSqlDialog.js.map +1 -0
- package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
- package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlFormat.js +32 -0
- package/lib/components/grid/CubeSqlFormat.js.map +1 -0
- package/lib/components/palette/CubePalette.d.ts.map +1 -1
- package/lib/components/palette/CubePalette.js +32 -13
- package/lib/components/palette/CubePalette.js.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
- package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.js +37 -16
- package/lib/components/source-picker/CubeDataProductTab.js.map +1 -1
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeDirectConnectionTab.js +6 -4
- package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -1
- package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
- package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
- package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
- package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeIngestTab.js +39 -16
- package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
- package/lib/components/source-picker/CubeInlineModelTab.d.ts +3 -2
- package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeInlineModelTab.js +23 -13
- package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -1
- package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
- package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerListItem.js +62 -0
- package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts +4 -3
- package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeProjectTab.js +7 -4
- package/lib/components/source-picker/CubeProjectTab.js.map +1 -1
- package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
- package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeServiceTab.js +36 -0
- package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
- package/lib/components/source-picker/CubeSourcePicker.js +16 -3
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
- package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
- package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
- package/lib/components/source-picker/CubeTablePreview.js +10 -0
- package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
- package/lib/graph-manager/CubeDataProductCatalog.d.ts +10 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -1
- package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -1
- package/lib/graph-manager/CubeEngine.d.ts +46 -1
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/CubeEngine.js.map +1 -1
- package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
- package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
- package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
- package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
- package/lib/graph-manager/CubeIngest.d.ts +5 -0
- package/lib/graph-manager/CubeIngest.d.ts.map +1 -1
- package/lib/graph-manager/CubeIngest.js +10 -0
- package/lib/graph-manager/CubeIngest.js.map +1 -1
- package/lib/graph-manager/CubeIngestCatalog.d.ts +26 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -1
- package/lib/graph-manager/CubeIngestCatalog.js +6 -0
- package/lib/graph-manager/CubeIngestCatalog.js.map +1 -1
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts +3 -3
- package/lib/graph-manager/CubeService.d.ts +20 -0
- package/lib/graph-manager/CubeService.d.ts.map +1 -0
- package/lib/graph-manager/CubeService.js +22 -0
- package/lib/graph-manager/CubeService.js.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.js +17 -0
- package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +52 -5
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +63 -5
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +9 -6
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +12 -8
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +18 -9
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +4 -9
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +49 -10
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +18 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +74 -6
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +7 -4
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +6 -2
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +12 -3
- 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 +10 -3
- package/lib/stores/CubeAddPlacement.d.ts.map +1 -1
- package/lib/stores/CubeAddPlacement.js +16 -5
- package/lib/stores/CubeAddPlacement.js.map +1 -1
- package/lib/stores/CubeDevSettingsState.d.ts +47 -0
- package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
- package/lib/stores/CubeDevSettingsState.js +99 -0
- package/lib/stores/CubeDevSettingsState.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +173 -43
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +498 -113
- package/lib/stores/CubeEditorState.js.map +1 -1
- package/lib/stores/CubeEngineChecks.d.ts +59 -0
- package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
- package/lib/stores/CubeEngineChecks.js +100 -0
- package/lib/stores/CubeEngineChecks.js.map +1 -0
- package/lib/stores/CubeExamples.d.ts.map +1 -1
- package/lib/stores/CubeExamples.js +39 -2
- package/lib/stores/CubeExamples.js.map +1 -1
- package/lib/stores/CubeExamplesState.d.ts +1 -1
- package/lib/stores/CubeExamplesState.d.ts.map +1 -1
- package/lib/stores/CubeExamplesState.js +2 -2
- package/lib/stores/CubeExamplesState.js.map +1 -1
- package/lib/stores/CubeExecutionState.d.ts.map +1 -1
- package/lib/stores/CubeExecutionState.js +24 -33
- package/lib/stores/CubeExecutionState.js.map +1 -1
- package/lib/stores/CubeExportState.d.ts +41 -0
- package/lib/stores/CubeExportState.d.ts.map +1 -0
- package/lib/stores/CubeExportState.js +134 -0
- package/lib/stores/CubeExportState.js.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.js +134 -0
- package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
- package/lib/stores/CubeExtendTyping.d.ts +6 -14
- package/lib/stores/CubeExtendTyping.d.ts.map +1 -1
- package/lib/stores/CubeExtendTyping.js +6 -33
- package/lib/stores/CubeExtendTyping.js.map +1 -1
- package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
- package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
- package/lib/stores/CubeFunctionRecheck.js +67 -0
- package/lib/stores/CubeFunctionRecheck.js.map +1 -0
- package/lib/stores/CubeGridFetcher.d.ts +75 -0
- package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
- package/lib/stores/CubeGridFetcher.js +197 -0
- package/lib/stores/CubeGridFetcher.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +18 -6
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
- package/lib/stores/CubeGridQuickActions.js +32 -12
- package/lib/stores/CubeGridQuickActions.js.map +1 -1
- package/lib/stores/CubeGridState.d.ts +136 -0
- package/lib/stores/CubeGridState.d.ts.map +1 -0
- package/lib/stores/CubeGridState.js +317 -0
- package/lib/stores/CubeGridState.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +42 -0
- package/lib/stores/CubeHost.d.ts.map +1 -1
- package/lib/stores/CubeHost.js +4 -0
- package/lib/stores/CubeHost.js.map +1 -1
- package/lib/stores/CubeLambdaImportState.d.ts +118 -0
- package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
- package/lib/stores/CubeLambdaImportState.js +302 -0
- package/lib/stores/CubeLambdaImportState.js.map +1 -0
- package/lib/stores/CubeLambdaSources.d.ts +45 -0
- package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
- package/lib/stores/CubeLambdaSources.js +261 -0
- package/lib/stores/CubeLambdaSources.js.map +1 -0
- package/lib/stores/CubeQueryRun.d.ts +59 -0
- package/lib/stores/CubeQueryRun.d.ts.map +1 -0
- package/lib/stores/CubeQueryRun.js +101 -0
- package/lib/stores/CubeQueryRun.js.map +1 -0
- package/lib/stores/CubeRunStatsState.d.ts +61 -0
- package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
- package/lib/stores/CubeRunStatsState.js +54 -0
- package/lib/stores/CubeRunStatsState.js.map +1 -0
- package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
- package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
- package/lib/stores/CubeRunningStepLambda.js +45 -0
- package/lib/stores/CubeRunningStepLambda.js.map +1 -0
- package/lib/stores/CubeServiceRecheck.d.ts +29 -0
- package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
- package/lib/stores/CubeServiceRecheck.js +33 -0
- package/lib/stores/CubeServiceRecheck.js.map +1 -0
- package/lib/stores/CubeShowPureState.d.ts +14 -1
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +41 -11
- package/lib/stores/CubeShowPureState.js.map +1 -1
- package/lib/stores/CubeSourcePickerState.d.ts +20 -4
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
- package/lib/stores/CubeSourcePickerState.js +75 -14
- package/lib/stores/CubeSourcePickerState.js.map +1 -1
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
- package/lib/stores/LocalModelCatalog.js +3 -1
- package/lib/stores/LocalModelCatalog.js.map +1 -1
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +91 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js +254 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
- package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
- package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeFunctionDraft.js +69 -0
- package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +20 -3
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
- package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
- package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePivotDraft.js +267 -0
- package/lib/stores/editors/CubePivotDraft.js.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +26 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js +46 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts +4 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -1
- package/lib/stores/fixtures/CubeTradesModel.js +31 -1
- package/lib/stores/fixtures/CubeTradesModel.js.map +1 -1
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts +34 -5
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeDataProductTabState.js +111 -26
- package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +25 -2
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js +183 -31
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeIngestTabState.d.ts +22 -9
- package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeIngestTabState.js +84 -29
- package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +100 -4
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeInlineModelTabState.js +415 -28
- package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeProjectTabState.d.ts +18 -3
- package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeProjectTabState.js +26 -1
- package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
- package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
- package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +15 -3
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeSourcePickerTab.js +21 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -1
- package/package.json +10 -9
- package/src/__lib__/LegendCubeCommand.ts +7 -0
- package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
- package/src/__lib__/LegendCubeHelpText.ts +23 -1
- package/src/__lib__/LegendCubeLabels.ts +170 -13
- package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
- package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
- package/src/__lib__/LegendCubeTesting.ts +7 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +2 -1
- package/src/__test-utils__/CubeExpressionTestUtils.ts +29 -2
- package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
- package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
- package/src/__test-utils__/CubePageTestUtils.tsx +34 -0
- package/src/__test-utils__/CubeTestApplication.ts +25 -0
- package/src/__test-utils__/FakeCubeEngine.ts +27 -0
- package/src/__test-utils__/FakeCubeIngestCatalog.ts +18 -0
- package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
- package/src/components/CubeAddItems.tsx +13 -6
- package/src/components/CubeDialogTheme.ts +25 -0
- package/src/components/CubeEditor.tsx +155 -129
- package/src/components/CubeFileMenu.tsx +127 -0
- package/src/components/CubeLambdaImportBanner.tsx +97 -0
- package/src/components/CubeNodeIcon.tsx +7 -0
- package/src/components/CubeSchemaColumnsTable.tsx +7 -2
- package/src/components/canvas/CubeCanvas.tsx +52 -13
- package/src/components/canvas/CubeCanvasContextMenu.tsx +33 -2
- package/src/components/canvas/CubeCanvasElements.ts +76 -3
- package/src/components/canvas/CubeCanvasLayout.ts +1 -1
- package/src/components/canvas/CubeCanvasNode.tsx +30 -3
- package/src/components/dev-settings/CubeDevSettings.tsx +154 -0
- package/src/components/editors/CubeColumnChecklist.tsx +8 -2
- package/src/components/editors/CubeColumnPicker.tsx +6 -3
- package/src/components/editors/CubeConcatEditor.tsx +2 -2
- package/src/components/editors/CubeExpressionFilterEditor.tsx +193 -0
- package/src/components/editors/CubeExtendEditor.tsx +3 -3
- package/src/components/editors/CubeFilterEditor.tsx +13 -1
- package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
- package/src/components/editors/CubeJoinEditor.tsx +23 -4
- package/src/components/editors/CubeNodeEditorPanel.tsx +22 -10
- package/src/components/editors/CubeNodeEditorPopper.tsx +9 -1
- package/src/components/editors/CubeNodeEditorRegistry.ts +12 -0
- package/src/components/editors/CubePivotEditor.tsx +277 -0
- package/src/components/editors/CubeRestrictEditor.tsx +8 -2
- package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
- package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
- package/src/components/grid/CubeDrilldownBar.tsx +219 -0
- package/src/components/grid/CubeGridRegion.tsx +170 -54
- package/src/components/grid/CubeGridValues.ts +146 -1
- package/src/components/grid/CubeResultGrid.tsx +443 -41
- package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
- package/src/components/grid/CubeServerSideGrid.tsx +200 -0
- package/src/components/grid/CubeSqlDialog.tsx +90 -0
- package/src/components/grid/CubeSqlFormat.ts +37 -0
- package/src/components/palette/CubePalette.tsx +45 -12
- package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
- package/src/components/source-picker/CubeDataProductTab.tsx +169 -75
- package/src/components/source-picker/CubeDirectConnectionTab.tsx +42 -30
- package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
- package/src/components/source-picker/CubeIngestTab.tsx +159 -79
- package/src/components/source-picker/CubeInlineModelTab.tsx +110 -81
- package/src/components/source-picker/CubePickerListItem.tsx +118 -0
- package/src/components/source-picker/CubeProjectTab.tsx +6 -3
- package/src/components/source-picker/CubeServiceTab.tsx +151 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +54 -18
- package/src/components/source-picker/CubeTablePreview.tsx +49 -0
- package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +21 -8
- package/src/graph-manager/CubeDataProductCatalog.ts +11 -0
- package/src/graph-manager/CubeEngine.ts +51 -1
- package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
- package/src/graph-manager/CubeIngest.ts +15 -0
- package/src/graph-manager/CubeIngestCatalog.ts +33 -0
- package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
- package/src/graph-manager/CubeProjectCatalog.ts +3 -3
- package/src/graph-manager/CubeService.ts +29 -0
- package/src/graph-manager/CubeServiceCatalog.ts +35 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +115 -5
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +13 -7
- package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +35 -9
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +6 -15
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +70 -15
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +7 -1
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +122 -7
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +9 -4
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +6 -1
- package/src/index.ts +32 -2
- package/src/stores/CubeAddPlacement.ts +25 -5
- package/src/stores/CubeDevSettingsState.ts +117 -0
- package/src/stores/CubeEditorState.ts +687 -197
- package/src/stores/CubeEngineChecks.ts +240 -0
- package/src/stores/CubeExamples.ts +70 -1
- package/src/stores/CubeExamplesState.ts +4 -2
- package/src/stores/CubeExecutionState.ts +26 -57
- package/src/stores/CubeExportState.ts +196 -0
- package/src/stores/CubeExpressionFilterCheck.ts +218 -0
- package/src/stores/CubeExtendTyping.ts +6 -46
- package/src/stores/CubeFunctionRecheck.ts +97 -0
- package/src/stores/CubeGridFetcher.ts +302 -0
- package/src/stores/CubeGridQuickActions.ts +33 -11
- package/src/stores/CubeGridState.ts +450 -0
- package/src/stores/CubeHost.ts +48 -0
- package/src/stores/CubeLambdaImportState.ts +434 -0
- package/src/stores/CubeLambdaSources.ts +390 -0
- package/src/stores/CubeQueryRun.ts +169 -0
- package/src/stores/CubeRunStatsState.ts +91 -0
- package/src/stores/CubeRunningStepLambda.ts +62 -0
- package/src/stores/CubeServiceRecheck.ts +53 -0
- package/src/stores/CubeShowPureState.ts +51 -12
- package/src/stores/CubeSourcePickerState.ts +89 -13
- package/src/stores/LocalModelCatalog.ts +6 -1
- package/src/stores/editors/CubeExpressionFilterDraft.ts +385 -0
- package/src/stores/editors/CubeFunctionDraft.ts +92 -0
- package/src/stores/editors/CubeNodeDraftRegistry.ts +27 -2
- package/src/stores/editors/CubePivotDraft.ts +355 -0
- package/src/stores/fixtures/CubeSalesDuckDbModel.ts +54 -0
- package/src/stores/fixtures/CubeTradesModel.ts +36 -1
- package/src/stores/source-picker/CubeDataProductTabState.ts +162 -35
- package/src/stores/source-picker/CubeDirectConnectionTabState.ts +246 -47
- package/src/stores/source-picker/CubeIngestTabState.ts +112 -38
- package/src/stores/source-picker/CubeInlineModelTabState.ts +514 -34
- package/src/stores/source-picker/CubeProjectTabState.ts +35 -3
- package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
- package/src/stores/source-picker/CubeSourcePickerTab.ts +31 -2
- package/tsconfig.json +50 -0
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { colSpec, colSpecArray, EmitRole, func, getExtendSignature, hashText, lambda, lambdaJson, originOf, printIR, QueryEmitter, stableJsonText, } from '@finos/legend-cube';
|
|
17
17
|
import { CubeEngineError, CubeEngineErrorKind, } from '../graph-manager/CubeEngine.js';
|
|
18
18
|
// Typing an Extend's columns with the engine (PLAN §11.7): its input's
|
|
19
19
|
// relation, as Cube types any node, then one extend per column. The whole
|
|
@@ -59,10 +59,11 @@ const digestModel = (model) => {
|
|
|
59
59
|
return digest;
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
|
-
* What the engine is given for
|
|
63
|
-
* (PLAN §11.7): the input's
|
|
64
|
-
*
|
|
65
|
-
*
|
|
62
|
+
* What the engine is given for a node's input when it types an Extend or
|
|
63
|
+
* checks a Filter by Expression, digested (PLAN §11.7, §11.11): the input's
|
|
64
|
+
* relation as emitted, and the model. A typing or a check records it
|
|
65
|
+
* (`upstream`), since the engine sees more than Cube's schema does;
|
|
66
|
+
* `undefined` when the input can't be emitted, e.g. it is invalid.
|
|
66
67
|
*/
|
|
67
68
|
export const getCubeExtendUpstream = (emitter, extendId, model) => {
|
|
68
69
|
const [inputId] = emitter.query.getInputIds(extendId);
|
|
@@ -86,34 +87,6 @@ export const isCubeExtendTypingCurrent = (extend, input, upstream) => {
|
|
|
86
87
|
extend.currentTyping(input) === typing &&
|
|
87
88
|
(recorded === undefined || recorded === upstream));
|
|
88
89
|
};
|
|
89
|
-
/**
|
|
90
|
-
* A query rule for the editor (PLAN §11.7): an Extend whose typing recorded
|
|
91
|
-
* another input than the engine would be given now waits to be typed again
|
|
92
|
-
* (`ERR_TYPING`), e.g. after an Extend above it gains `->toOne()`, which
|
|
93
|
-
* Cube's schema doesn't show. A typing that recorded nothing, as one loaded,
|
|
94
|
-
* is used as it is; an Extend that already waits, or whose input is invalid,
|
|
95
|
-
* is left to its own checks.
|
|
96
|
-
*/
|
|
97
|
-
export const createStaleCubeExtendTypingRule = (registry, modelOf) => (query) => {
|
|
98
|
-
const stale = new Map();
|
|
99
|
-
const model = modelOf();
|
|
100
|
-
const recorded = query.nodes.filter((node) => node instanceof Extend && upstreamOf(node.typing) !== undefined);
|
|
101
|
-
if (!model || !recorded.length) {
|
|
102
|
-
return stale;
|
|
103
|
-
}
|
|
104
|
-
const { validity } = buildSchemasAndValidity(query, registry.queryRules);
|
|
105
|
-
const emitter = new QueryEmitter(query, registry);
|
|
106
|
-
recorded.forEach((node) => {
|
|
107
|
-
if ((validity.get(node.id) ?? []).some(isTypingError)) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const upstream = getCubeExtendUpstream(emitter, node.id, model);
|
|
111
|
-
if (upstream !== undefined && upstream !== upstreamOf(node.typing)) {
|
|
112
|
-
stale.set(node.id, [ERR_TYPING]);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
return stale;
|
|
116
|
-
};
|
|
117
90
|
/**
|
|
118
91
|
* The typing the engine's answers give, for this input and these columns:
|
|
119
92
|
* every column's type, from the whole chain, else the first column whose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeExtendTyping.js","sourceRoot":"","sources":["../../src/stores/CubeExtendTyping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"CubeExtendTyping.js","sourceRoot":"","sources":["../../src/stores/CubeExtendTyping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 FunctionSource, type IR, type ModelContext, type Schema } from '@finos/legend-cube';
|
|
17
|
+
import { CubeEngineError, type CubeEngine, type NodeId } from '../graph-manager/CubeEngine.js';
|
|
18
|
+
/**
|
|
19
|
+
* The lambda that types a function source, `{| sales::ordersAbove(…)}`: its
|
|
20
|
+
* values where they are valid, else a placeholder of the parameter's type, or
|
|
21
|
+
* `[]` for an empty optional one
|
|
22
|
+
*/
|
|
23
|
+
export declare const buildCubeFunctionTypingLambda: (source: FunctionSource) => IR;
|
|
24
|
+
/**
|
|
25
|
+
* Types a cube's functions again with the engine (PLAN §6.5), in one call:
|
|
26
|
+
* their columns as the engine types the call. One answer per source,
|
|
27
|
+
* failures included; never rejects.
|
|
28
|
+
*/
|
|
29
|
+
export declare const recheckCubeFunctionSources: (engine: CubeEngine, model: ModelContext, sources: readonly FunctionSource[]) => Promise<Map<NodeId, Schema | CubeEngineError>>;
|
|
30
|
+
//# sourceMappingURL=CubeFunctionRecheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeFunctionRecheck.d.ts","sourceRoot":"","sources":["../../src/stores/CubeFunctionRecheck.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,EAAE,EAGP,KAAK,YAAY,EACjB,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EAEf,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,gCAAgC,CAAC;AAcxC;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,cAAc,KAAG,EAatE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,QAAQ,UAAU,EAClB,OAAO,YAAY,EACnB,SAAS,SAAS,cAAc,EAAE,KACjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,CAqB/C,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { emitFunctionSource, getLiteralKinds, lambda, } from '@finos/legend-cube';
|
|
17
|
+
import { CubeEngineError, CubeEngineErrorKind, } from '../graph-manager/CubeEngine.js';
|
|
18
|
+
/** A value of each kind, which only types the call: a function's columns don't depend on its values */
|
|
19
|
+
const PLACEHOLDERS = {
|
|
20
|
+
string: { kind: 'string', value: '' },
|
|
21
|
+
boolean: { kind: 'boolean', value: false },
|
|
22
|
+
integer: { kind: 'integer', value: '0' },
|
|
23
|
+
float: { kind: 'float', value: '0' },
|
|
24
|
+
decimal: { kind: 'decimal', value: '0' },
|
|
25
|
+
strictDate: { kind: 'strictDate', value: '2000-01-01' },
|
|
26
|
+
dateTime: { kind: 'dateTime', value: '2000-01-01T00:00:00' },
|
|
27
|
+
enum: { kind: 'enum', value: '' },
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The lambda that types a function source, `{| sales::ordersAbove(…)}`: its
|
|
31
|
+
* values where they are valid, else a placeholder of the parameter's type, or
|
|
32
|
+
* `[]` for an empty optional one
|
|
33
|
+
*/
|
|
34
|
+
export const buildCubeFunctionTypingLambda = (source) => {
|
|
35
|
+
const values = source.parameters.map((parameter, index) => {
|
|
36
|
+
const value = source.values[index];
|
|
37
|
+
if (value !== undefined && value.kind !== 'invalid') {
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
if (value === undefined && parameter.optional) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const [kind] = getLiteralKinds(parameter.type);
|
|
44
|
+
return kind ? PLACEHOLDERS[kind] : undefined;
|
|
45
|
+
});
|
|
46
|
+
return lambda([], [emitFunctionSource(source.withValues(values))]);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Types a cube's functions again with the engine (PLAN §6.5), in one call:
|
|
50
|
+
* their columns as the engine types the call. One answer per source,
|
|
51
|
+
* failures included; never rejects.
|
|
52
|
+
*/
|
|
53
|
+
export const recheckCubeFunctionSources = async (engine, model, sources) => {
|
|
54
|
+
try {
|
|
55
|
+
return await engine.typeLambdas(model, new Map(sources.map((source) => [
|
|
56
|
+
source.id,
|
|
57
|
+
buildCubeFunctionTypingLambda(source),
|
|
58
|
+
])));
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const failure = error instanceof CubeEngineError
|
|
62
|
+
? error
|
|
63
|
+
: new CubeEngineError(CubeEngineErrorKind.NETWORK, error instanceof Error ? error.message : String(error));
|
|
64
|
+
return new Map(sources.map((source) => [source.id, failure]));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=CubeFunctionRecheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeFunctionRecheck.js","sourceRoot":"","sources":["../../src/stores/CubeFunctionRecheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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 ColumnDirection, type DrilldownCell, type DrilldownLevel } from '@finos/legend-cube';
|
|
17
|
+
import { type CubeResultValue } from '../graph-manager/CubeEngine.js';
|
|
18
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
19
|
+
import type { CubeExecutionResult } from './CubeExecutionState.js';
|
|
20
|
+
/** A row of a level, by the run's column positions */
|
|
21
|
+
export interface CubeGridRow {
|
|
22
|
+
/** Each run column's value, `undefined` where the level shows none (a group row's column with no aggregation) */
|
|
23
|
+
readonly cells: readonly (CubeResultValue | undefined)[];
|
|
24
|
+
/** On a group row, how many of the run's rows the group holds */
|
|
25
|
+
readonly count?: number | undefined;
|
|
26
|
+
}
|
|
27
|
+
/** The rows of one level of the grid: the run's rows, or groups of them */
|
|
28
|
+
export interface CubeGridLevelRows {
|
|
29
|
+
readonly level: DrilldownLevel;
|
|
30
|
+
readonly rows: readonly CubeGridRow[];
|
|
31
|
+
/** The engine returned more than the run's row limit */
|
|
32
|
+
readonly limited: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** An answer for rows the grid no longer shows: a newer run, or the grid purged its rows; it is dropped */
|
|
35
|
+
export declare class CubeGridFetchDropped extends Error {
|
|
36
|
+
constructor();
|
|
37
|
+
}
|
|
38
|
+
/** The most rows the cache holds across its levels; the oldest levels go first (PLAN §11.10) */
|
|
39
|
+
export declare const MAX_CUBE_GRID_CACHED_ROWS = 200000;
|
|
40
|
+
export declare const CUBE_GRID_CONTEXT_CHANGED = "The cube's model, runtime or warehouse changed since this run: execute again to see more of its rows.";
|
|
41
|
+
/**
|
|
42
|
+
* Fetches the levels of the grid's server-side mode (PLAN §11.10): each a
|
|
43
|
+
* query derived from the run on screen, never the live cube, with the
|
|
44
|
+
* drill-down the cube has now and the grid's sort, run as Execute runs
|
|
45
|
+
* (`runCubeQuery`), with the run's model, runtime and row limit. Answers are
|
|
46
|
+
* cached by the derived query, the oldest dropped past
|
|
47
|
+
* `MAX_CUBE_GRID_CACHED_ROWS` rows. `purge()` drops them all, aborts the
|
|
48
|
+
* fetches in flight and drops their answers, as a new run does.
|
|
49
|
+
*/
|
|
50
|
+
export declare class CubeGridFetcher {
|
|
51
|
+
readonly editorState: CubeEditorState;
|
|
52
|
+
/** The most rows the cache holds */
|
|
53
|
+
readonly maxCachedRows: number;
|
|
54
|
+
/** Bumped by each purge: an answer of an older generation is dropped */
|
|
55
|
+
private generation;
|
|
56
|
+
private resultId;
|
|
57
|
+
/** In the order last used, the oldest first */
|
|
58
|
+
private readonly cache;
|
|
59
|
+
private readonly controllers;
|
|
60
|
+
constructor(editorState: CubeEditorState, maxCachedRows?: number);
|
|
61
|
+
/** How many rows the cache holds */
|
|
62
|
+
get cachedRows(): number;
|
|
63
|
+
/** Drops every cached level, and aborts the fetches in flight, whose answers are then dropped */
|
|
64
|
+
purge(): void;
|
|
65
|
+
/**
|
|
66
|
+
* The rows of the level under the expanded groups' keys (outermost first;
|
|
67
|
+
* none for the top level), sorted by the grid. Rejects with a
|
|
68
|
+
* `CubeEngineError`, or a `CubeGridFetchDropped` when the answer is for rows
|
|
69
|
+
* the grid no longer shows.
|
|
70
|
+
*/
|
|
71
|
+
fetchLevel(result: CubeExecutionResult, keys: readonly DrilldownCell[], sorts: readonly ColumnDirection[]): Promise<CubeGridLevelRows>;
|
|
72
|
+
/** Drops the least recently used levels until the cache holds at most its rows, never the one just answered */
|
|
73
|
+
private evict;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=CubeGridFetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeGridFetcher.d.ts","sourceRoot":"","sources":["../../src/stores/CubeGridFetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,cAAc,EAIpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,iHAAiH;IACjH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,CAAC;IACzD,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,2GAA2G;AAC3G,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,gGAAgG;AAChG,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAEjD,eAAO,MAAM,yBAAyB,0GACmE,CAAC;AAkC1G;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,oCAAoC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,wEAAwE;IACxE,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAqB;IACrC,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAGxD,WAAW,EAAE,eAAe,EAC5B,aAAa,SAA4B;IAM3C,oCAAoC;IACpC,IAAI,UAAU,IAAI,MAAM,CAKvB;IAED,iGAAiG;IACjG,KAAK,IAAI,IAAI;IAOb;;;;;OAKG;IACH,UAAU,CACR,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,SAAS,aAAa,EAAE,EAC9B,KAAK,EAAE,SAAS,eAAe,EAAE,GAChC,OAAO,CAAC,iBAAiB,CAAC;IAyI7B,+GAA+G;IAC/G,OAAO,CAAC,KAAK;CAUd"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { buildSchemasAndValidity, checkDrilldown, deriveDrilldownLevel, printIR, QueryEmitter, SortDirection, } from '@finos/legend-cube';
|
|
17
|
+
import { NULL_CELL_TEXT } from '../__lib__/LegendCubeLabels.js';
|
|
18
|
+
import { CubeEngineError, CubeEngineErrorKind, } from '../graph-manager/CubeEngine.js';
|
|
19
|
+
import { runCubeQuery } from './CubeQueryRun.js';
|
|
20
|
+
/** An answer for rows the grid no longer shows: a newer run, or the grid purged its rows; it is dropped */
|
|
21
|
+
export class CubeGridFetchDropped extends Error {
|
|
22
|
+
constructor() {
|
|
23
|
+
super('The rows were asked for by a grid that no longer shows them');
|
|
24
|
+
this.name = 'CubeGridFetchDropped';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** The most rows the cache holds across its levels; the oldest levels go first (PLAN §11.10) */
|
|
28
|
+
export const MAX_CUBE_GRID_CACHED_ROWS = 200_000;
|
|
29
|
+
export const CUBE_GRID_CONTEXT_CHANGED = "The cube's model, runtime or warehouse changed since this run: execute again to see more of its rows.";
|
|
30
|
+
/** How a fetch is shown in the run stats, e.g. `Rows of SHIP_COUNTRY "France"` */
|
|
31
|
+
const describeFetch = (level, keys, levels, sorts) => {
|
|
32
|
+
const of = keys
|
|
33
|
+
.map((key, index) => `${levels[index]} ${key === null ? NULL_CELL_TEXT : JSON.stringify(String(key))}`)
|
|
34
|
+
.join(', ');
|
|
35
|
+
const sorted = sorts
|
|
36
|
+
.map(({ column, direction }) => `${column} ${direction === SortDirection.DESC ? 'descending' : 'ascending'}`)
|
|
37
|
+
.join(', ');
|
|
38
|
+
return [
|
|
39
|
+
level.isLeaf ? 'Rows' : `Groups by ${level.groupColumns.at(-1)}`,
|
|
40
|
+
of ? ` of ${of}` : '',
|
|
41
|
+
sorted ? `, sorted by ${sorted}` : '',
|
|
42
|
+
].join('');
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Fetches the levels of the grid's server-side mode (PLAN §11.10): each a
|
|
46
|
+
* query derived from the run on screen, never the live cube, with the
|
|
47
|
+
* drill-down the cube has now and the grid's sort, run as Execute runs
|
|
48
|
+
* (`runCubeQuery`), with the run's model, runtime and row limit. Answers are
|
|
49
|
+
* cached by the derived query, the oldest dropped past
|
|
50
|
+
* `MAX_CUBE_GRID_CACHED_ROWS` rows. `purge()` drops them all, aborts the
|
|
51
|
+
* fetches in flight and drops their answers, as a new run does.
|
|
52
|
+
*/
|
|
53
|
+
export class CubeGridFetcher {
|
|
54
|
+
editorState;
|
|
55
|
+
/** The most rows the cache holds */
|
|
56
|
+
maxCachedRows;
|
|
57
|
+
/** Bumped by each purge: an answer of an older generation is dropped */
|
|
58
|
+
generation = 0;
|
|
59
|
+
resultId;
|
|
60
|
+
/** In the order last used, the oldest first */
|
|
61
|
+
cache = new Map();
|
|
62
|
+
controllers = new Set();
|
|
63
|
+
constructor(editorState, maxCachedRows = MAX_CUBE_GRID_CACHED_ROWS) {
|
|
64
|
+
this.editorState = editorState;
|
|
65
|
+
this.maxCachedRows = maxCachedRows;
|
|
66
|
+
}
|
|
67
|
+
/** How many rows the cache holds */
|
|
68
|
+
get cachedRows() {
|
|
69
|
+
return Array.from(this.cache.values()).reduce((total, cached) => total + cached.rows, 0);
|
|
70
|
+
}
|
|
71
|
+
/** Drops every cached level, and aborts the fetches in flight, whose answers are then dropped */
|
|
72
|
+
purge() {
|
|
73
|
+
this.generation += 1;
|
|
74
|
+
this.cache.clear();
|
|
75
|
+
this.controllers.forEach((controller) => controller.abort());
|
|
76
|
+
this.controllers.clear();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The rows of the level under the expanded groups' keys (outermost first;
|
|
80
|
+
* none for the top level), sorted by the grid. Rejects with a
|
|
81
|
+
* `CubeEngineError`, or a `CubeGridFetchDropped` when the answer is for rows
|
|
82
|
+
* the grid no longer shows.
|
|
83
|
+
*/
|
|
84
|
+
fetchLevel(result, keys, sorts) {
|
|
85
|
+
if (result.id !== this.resultId) {
|
|
86
|
+
this.purge();
|
|
87
|
+
this.resultId = result.id;
|
|
88
|
+
}
|
|
89
|
+
const { editorState } = this;
|
|
90
|
+
const model = result.context?.model;
|
|
91
|
+
const runtime = result.context?.runtime;
|
|
92
|
+
const captureId = result.query.selected;
|
|
93
|
+
if (!model || !runtime || captureId === undefined) {
|
|
94
|
+
return Promise.reject(new Error('A run has a model, a runtime and a node'));
|
|
95
|
+
}
|
|
96
|
+
// the warehouse is read from the page when the query runs, so a fetch
|
|
97
|
+
// under another one would run the run's query elsewhere
|
|
98
|
+
if (result.context !== editorState.document.context ||
|
|
99
|
+
result.warehouse !== editorState.dataProductRuntime.effectiveWarehouse) {
|
|
100
|
+
return Promise.reject(new CubeEngineError(CubeEngineErrorKind.EXECUTION, CUBE_GRID_CONTEXT_CHANGED, captureId));
|
|
101
|
+
}
|
|
102
|
+
let level;
|
|
103
|
+
const drilldown = checkDrilldown(editorState.document.meta.drilldown ?? { columns: [], aggregations: [] }, result.schema);
|
|
104
|
+
try {
|
|
105
|
+
level = deriveDrilldownLevel({
|
|
106
|
+
query: result.query,
|
|
107
|
+
captureId,
|
|
108
|
+
schema: result.schema,
|
|
109
|
+
drilldown,
|
|
110
|
+
keys,
|
|
111
|
+
sorts,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
return Promise.reject(new CubeEngineError(CubeEngineErrorKind.EXECUTION, error instanceof Error ? error.message : String(error), captureId));
|
|
116
|
+
}
|
|
117
|
+
const runId = level.query.selected;
|
|
118
|
+
// Cube's own checks first, so the engine never gets a query Cube knows is wrong
|
|
119
|
+
const { schemas, validity } = buildSchemasAndValidity(level.query, editorState.registry.queryRules);
|
|
120
|
+
const problem = (validity.get(runId) ?? [])[0];
|
|
121
|
+
const schema = schemas.get(runId);
|
|
122
|
+
if (problem !== undefined || !schema) {
|
|
123
|
+
return Promise.reject(new CubeEngineError(CubeEngineErrorKind.EXECUTION, `These rows can't be fetched: ${problem ?? 'the query has no columns'}`, captureId));
|
|
124
|
+
}
|
|
125
|
+
// the whole run, so a sort the row order keeps is in it
|
|
126
|
+
const key = printIR(new QueryEmitter(level.query, editorState.registry).emitExecutionLambda({
|
|
127
|
+
rowLimit: result.rowLimit,
|
|
128
|
+
runtime,
|
|
129
|
+
}));
|
|
130
|
+
const cached = this.cache.get(key);
|
|
131
|
+
if (cached) {
|
|
132
|
+
// last used now
|
|
133
|
+
this.cache.delete(key);
|
|
134
|
+
this.cache.set(key, cached);
|
|
135
|
+
return cached.promise;
|
|
136
|
+
}
|
|
137
|
+
const generation = this.generation;
|
|
138
|
+
const controller = new AbortController();
|
|
139
|
+
this.controllers.add(controller);
|
|
140
|
+
const entry = {
|
|
141
|
+
rows: 0,
|
|
142
|
+
promise: runCubeQuery(editorState, {
|
|
143
|
+
query: level.query,
|
|
144
|
+
model,
|
|
145
|
+
runtime,
|
|
146
|
+
schema,
|
|
147
|
+
rowLimit: result.rowLimit,
|
|
148
|
+
abortController: controller,
|
|
149
|
+
label: describeFetch(level, keys, drilldown.columns, sorts),
|
|
150
|
+
})
|
|
151
|
+
.then((run) => {
|
|
152
|
+
if (generation !== this.generation) {
|
|
153
|
+
throw new CubeGridFetchDropped();
|
|
154
|
+
}
|
|
155
|
+
const positions = result.schema.columns.map(({ name }) => {
|
|
156
|
+
const output = level.columns.get(name);
|
|
157
|
+
return output === undefined
|
|
158
|
+
? -1
|
|
159
|
+
: schema.columns.findIndex((column) => column.name === output);
|
|
160
|
+
});
|
|
161
|
+
const countAt = level.countColumn
|
|
162
|
+
? schema.columns.findIndex((column) => column.name === level.countColumn)
|
|
163
|
+
: -1;
|
|
164
|
+
const rows = run.rows.map((row) => ({
|
|
165
|
+
cells: positions.map((position) => position === -1 ? undefined : (row[position] ?? null)),
|
|
166
|
+
...(countAt === -1 ? {} : { count: Number(row[countAt]) }),
|
|
167
|
+
}));
|
|
168
|
+
entry.rows = rows.length;
|
|
169
|
+
this.evict(key);
|
|
170
|
+
return { level, rows, limited: run.limited };
|
|
171
|
+
})
|
|
172
|
+
.catch((error) => {
|
|
173
|
+
if (this.cache.get(key) === entry) {
|
|
174
|
+
this.cache.delete(key);
|
|
175
|
+
}
|
|
176
|
+
throw generation !== this.generation
|
|
177
|
+
? new CubeGridFetchDropped()
|
|
178
|
+
: error;
|
|
179
|
+
})
|
|
180
|
+
.finally(() => this.controllers.delete(controller)),
|
|
181
|
+
};
|
|
182
|
+
this.cache.set(key, entry);
|
|
183
|
+
return entry.promise;
|
|
184
|
+
}
|
|
185
|
+
/** Drops the least recently used levels until the cache holds at most its rows, never the one just answered */
|
|
186
|
+
evict(keep) {
|
|
187
|
+
for (const [key] of this.cache) {
|
|
188
|
+
if (this.cachedRows <= this.maxCachedRows) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (key !== keep) {
|
|
192
|
+
this.cache.delete(key);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=CubeGridFetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeGridFetcher.js","sourceRoot":"","sources":["../../src/stores/CubeGridFetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,16 +33,28 @@ export interface CubeGridQuickAction {
|
|
|
33
33
|
/** Adds its node after the node that runs, as one undo step; nothing runs */
|
|
34
34
|
readonly apply: () => void;
|
|
35
35
|
}
|
|
36
|
+
/** What a cell of the grid holds */
|
|
37
|
+
export declare enum CubeGridCellKind {
|
|
38
|
+
/** A run row's value, or a group row's key */
|
|
39
|
+
VALUE = "value",
|
|
40
|
+
/** A group row's aggregation of its rows' values (PLAN §11.10) */
|
|
41
|
+
AGGREGATE = "aggregate",
|
|
42
|
+
/** A group row's column with no aggregation: nothing */
|
|
43
|
+
EMPTY = "empty"
|
|
44
|
+
}
|
|
36
45
|
/**
|
|
37
|
-
* The quick actions on a cell of the shown rows (spec §12.4, PLAN §11.4
|
|
38
|
-
* §11.5): "Sort by" adds an ascending Sort on the cell's column,
|
|
39
|
-
* Group by it with Count rows, and "Filter by" an Equal on its
|
|
40
|
-
* Empty on a null
|
|
41
|
-
*
|
|
46
|
+
* The quick actions on a cell of the shown rows (spec §12.4, PLAN §11.4,
|
|
47
|
+
* §11.5 and §11.10): "Sort by" adds an ascending Sort on the cell's column,
|
|
48
|
+
* "Group by" a Group by it with Count rows, and "Filter by" an Equal on its
|
|
49
|
+
* value (Is Empty on a null; on a float, In the value and its 32-bit value
|
|
50
|
+
* when they differ, so a `REAL` value is found, as a drill-down's key is,
|
|
51
|
+
* PLAN §11.14), after the node that runs, which they replace as
|
|
52
|
+
* the node that runs; a group row's cell other than its key has no value of a
|
|
53
|
+
* row, so "Filter by" is disabled there. All need the rows to be from the current query, no run in
|
|
42
54
|
* flight, and a cube that can change; "Sort by" and "Group by" a type that
|
|
43
55
|
* compares, and "Filter by" a value its column's type can compare.
|
|
44
56
|
* Read when the menu opens; `[]` when the position is not a column of the
|
|
45
57
|
* shown rows.
|
|
46
58
|
*/
|
|
47
|
-
export declare const getCubeGridQuickActions: (editorState: CubeEditorState, position: number, cell: CubeResultValue) => CubeGridQuickAction[];
|
|
59
|
+
export declare const getCubeGridQuickActions: (editorState: CubeEditorState, position: number, cell: CubeResultValue, cellKind?: CubeGridCellKind) => CubeGridQuickAction[];
|
|
48
60
|
//# sourceMappingURL=CubeGridQuickActions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeGridQuickActions.d.ts","sourceRoot":"","sources":["../../src/stores/CubeGridQuickActions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAUL,KAAK,MAAM,EAGZ,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAWpD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"CubeGridQuickActions.d.ts","sourceRoot":"","sources":["../../src/stores/CubeGridQuickActions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAUL,KAAK,MAAM,EAGZ,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAWpD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,oCAAoC;AACpC,oBAAY,gBAAgB;IAC1B,8CAA8C;IAC9C,KAAK,UAAU;IACf,kEAAkE;IAClE,SAAS,cAAc;IACvB,wDAAwD;IACxD,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,aAAa,eAAe,EAC5B,UAAU,MAAM,EAChB,MAAM,eAAe,EACrB,2BAAiC,KAChC,mBAAmB,EA4GrB,CAAC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { AggregationFunction,
|
|
16
|
+
import { AggregationFunction, buildDrilldownKeyRule, FilterOperator, Filter, foldColumnName, getAggregationAutoName, Group, isOperatorAvailable, isSortableType, Sort, TypeFamily, } from '@finos/legend-cube';
|
|
17
17
|
import { CUBE_QUICK_ACTION_DISABLED_REASON, FILTER_FLOAT_COMPARISON_HINT, READ_ONLY_CUBE_TITLE, } from '../__lib__/LegendCubeLabels.js';
|
|
18
18
|
/**
|
|
19
19
|
* The name of a Group by's Count rows: `Count Rows`, or with a number after it
|
|
@@ -29,18 +29,31 @@ export const getGroupByCountName = (schema) => {
|
|
|
29
29
|
}
|
|
30
30
|
return name;
|
|
31
31
|
};
|
|
32
|
+
/** What a cell of the grid holds */
|
|
33
|
+
export var CubeGridCellKind;
|
|
34
|
+
(function (CubeGridCellKind) {
|
|
35
|
+
/** A run row's value, or a group row's key */
|
|
36
|
+
CubeGridCellKind["VALUE"] = "value";
|
|
37
|
+
/** A group row's aggregation of its rows' values (PLAN §11.10) */
|
|
38
|
+
CubeGridCellKind["AGGREGATE"] = "aggregate";
|
|
39
|
+
/** A group row's column with no aggregation: nothing */
|
|
40
|
+
CubeGridCellKind["EMPTY"] = "empty";
|
|
41
|
+
})(CubeGridCellKind || (CubeGridCellKind = {}));
|
|
32
42
|
/**
|
|
33
|
-
* The quick actions on a cell of the shown rows (spec §12.4, PLAN §11.4
|
|
34
|
-
* §11.5): "Sort by" adds an ascending Sort on the cell's column,
|
|
35
|
-
* Group by it with Count rows, and "Filter by" an Equal on its
|
|
36
|
-
* Empty on a null
|
|
37
|
-
*
|
|
43
|
+
* The quick actions on a cell of the shown rows (spec §12.4, PLAN §11.4,
|
|
44
|
+
* §11.5 and §11.10): "Sort by" adds an ascending Sort on the cell's column,
|
|
45
|
+
* "Group by" a Group by it with Count rows, and "Filter by" an Equal on its
|
|
46
|
+
* value (Is Empty on a null; on a float, In the value and its 32-bit value
|
|
47
|
+
* when they differ, so a `REAL` value is found, as a drill-down's key is,
|
|
48
|
+
* PLAN §11.14), after the node that runs, which they replace as
|
|
49
|
+
* the node that runs; a group row's cell other than its key has no value of a
|
|
50
|
+
* row, so "Filter by" is disabled there. All need the rows to be from the current query, no run in
|
|
38
51
|
* flight, and a cube that can change; "Sort by" and "Group by" a type that
|
|
39
52
|
* compares, and "Filter by" a value its column's type can compare.
|
|
40
53
|
* Read when the menu opens; `[]` when the position is not a column of the
|
|
41
54
|
* shown rows.
|
|
42
55
|
*/
|
|
43
|
-
export const getCubeGridQuickActions = (editorState, position, cell) => {
|
|
56
|
+
export const getCubeGridQuickActions = (editorState, position, cell, cellKind = CubeGridCellKind.VALUE) => {
|
|
44
57
|
const { execution, document } = editorState;
|
|
45
58
|
const { result } = execution;
|
|
46
59
|
const column = result?.schema.columns[position];
|
|
@@ -50,7 +63,9 @@ export const getCubeGridQuickActions = (editorState, position, cell) => {
|
|
|
50
63
|
const { query } = document;
|
|
51
64
|
const afterId = query.selected;
|
|
52
65
|
const typeName = column.type.displayName;
|
|
53
|
-
const rule =
|
|
66
|
+
const rule = cellKind === CubeGridCellKind.VALUE
|
|
67
|
+
? buildDrilldownKeyRule(column.name, column.type, cell)
|
|
68
|
+
: undefined;
|
|
54
69
|
// what keeps both from being used, in order
|
|
55
70
|
const blocked = result.query !== query || execution.isStale
|
|
56
71
|
? CUBE_QUICK_ACTION_DISABLED_REASON.STALE_ROWS
|
|
@@ -73,9 +88,13 @@ export const getCubeGridQuickActions = (editorState, position, cell) => {
|
|
|
73
88
|
const filterReason = blocked ??
|
|
74
89
|
(rule
|
|
75
90
|
? undefined
|
|
76
|
-
:
|
|
77
|
-
? CUBE_QUICK_ACTION_DISABLED_REASON.
|
|
78
|
-
:
|
|
91
|
+
: cellKind === CubeGridCellKind.AGGREGATE
|
|
92
|
+
? CUBE_QUICK_ACTION_DISABLED_REASON.AGGREGATE_VALUE
|
|
93
|
+
: cellKind === CubeGridCellKind.EMPTY
|
|
94
|
+
? CUBE_QUICK_ACTION_DISABLED_REASON.NO_VALUE
|
|
95
|
+
: isOperatorAvailable(FilterOperator.EQUAL, column.type)
|
|
96
|
+
? CUBE_QUICK_ACTION_DISABLED_REASON.UNREADABLE_VALUE
|
|
97
|
+
: CUBE_QUICK_ACTION_DISABLED_REASON.notComparable(typeName));
|
|
79
98
|
return [
|
|
80
99
|
{
|
|
81
100
|
label: `Sort by "${column.name}"`,
|
|
@@ -107,7 +126,8 @@ export const getCubeGridQuickActions = (editorState, position, cell) => {
|
|
|
107
126
|
{
|
|
108
127
|
label: `Filter by "${column.name}"`,
|
|
109
128
|
disabledReason: filterReason,
|
|
110
|
-
hint: rule?.operator === FilterOperator.EQUAL
|
|
129
|
+
hint: (rule?.operator === FilterOperator.EQUAL ||
|
|
130
|
+
rule?.operator === FilterOperator.IN) &&
|
|
111
131
|
column.type.family === TypeFamily.FLOAT
|
|
112
132
|
? FILTER_FLOAT_COMPARISON_HINT
|
|
113
133
|
: undefined,
|