@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
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
buildSchemasAndValidity,
|
|
19
|
+
CubeLambdaReadError,
|
|
20
|
+
decodeCubeSpec,
|
|
21
|
+
ExpressionFilter,
|
|
22
|
+
getExpressionFilterSignature,
|
|
23
|
+
lambda,
|
|
24
|
+
QueryEmitter,
|
|
25
|
+
RelationalTableSource,
|
|
26
|
+
type CubeDocument,
|
|
27
|
+
type CubeSourceStep,
|
|
28
|
+
type IR,
|
|
29
|
+
type Query,
|
|
30
|
+
} from '@finos/legend-cube';
|
|
31
|
+
import { readdirSync, readFileSync } from 'fs';
|
|
32
|
+
import { join, resolve } from 'path';
|
|
33
|
+
|
|
34
|
+
// The lambdas Cube writes for the core's saved spec samples (PLAN §10.3),
|
|
35
|
+
// for Import Pure's round trips (PLAN §11.18): for each node that can be
|
|
36
|
+
// written, as a matview saves it and as Show Pure shows a run of it
|
|
37
|
+
|
|
38
|
+
const FIXTURES = resolve(
|
|
39
|
+
__dirname,
|
|
40
|
+
'../../../legend-cube/src/spec/__tests__/fixtures',
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
export interface TEST__CubeLambdaSample {
|
|
44
|
+
/** `<file>/<node id>` */
|
|
45
|
+
readonly key: string;
|
|
46
|
+
readonly document: CubeDocument;
|
|
47
|
+
readonly nodeId: string;
|
|
48
|
+
/** The node's relation, as a matview saves it: `{| <relation>}`, written with its rows' order */
|
|
49
|
+
readonly relation: IR;
|
|
50
|
+
/** A run of the node with no row limit, as Show Pure shows it: lets, the capture's sort, `from()` */
|
|
51
|
+
readonly run: IR;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Every node of every sample that can be written, by key */
|
|
55
|
+
export const TEST__cubeLambdaSamples = (): TEST__CubeLambdaSample[] =>
|
|
56
|
+
readdirSync(FIXTURES)
|
|
57
|
+
.filter((file) => file.endsWith('.cube.json'))
|
|
58
|
+
.sort()
|
|
59
|
+
.flatMap((file) => {
|
|
60
|
+
const { document } = decodeCubeSpec(
|
|
61
|
+
JSON.parse(readFileSync(join(FIXTURES, file), 'utf-8')),
|
|
62
|
+
);
|
|
63
|
+
const runtime = document.context?.runtime;
|
|
64
|
+
if (runtime === undefined) {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
const emitter = new QueryEmitter(document.query);
|
|
68
|
+
return document.query.nodes
|
|
69
|
+
.filter((node) => emitter.canEmit(node.id))
|
|
70
|
+
.map((node) => ({
|
|
71
|
+
key: `${file}/${node.id}`,
|
|
72
|
+
document,
|
|
73
|
+
nodeId: node.id,
|
|
74
|
+
relation: lambda(
|
|
75
|
+
[],
|
|
76
|
+
[emitter.emitRelation(node.id, { withRowOrder: true })],
|
|
77
|
+
),
|
|
78
|
+
run: new QueryEmitter(
|
|
79
|
+
document.query.selected === node.id
|
|
80
|
+
? document.query
|
|
81
|
+
: document.query.select(node.id),
|
|
82
|
+
).emitExecutionLambda({ runtime }),
|
|
83
|
+
}));
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
/** Each table of the lambda bound to the sample's own source of it, with its saved columns */
|
|
87
|
+
export const TEST__bindSampleSources =
|
|
88
|
+
(document: CubeDocument) =>
|
|
89
|
+
(source: IR): CubeSourceStep => {
|
|
90
|
+
const table = document.query.nodes.find(
|
|
91
|
+
(node): node is RelationalTableSource =>
|
|
92
|
+
node instanceof RelationalTableSource &&
|
|
93
|
+
source.k === 'storeAccessor' &&
|
|
94
|
+
source.path.join('.') ===
|
|
95
|
+
[node.database, node.schema, node.table].join('.'),
|
|
96
|
+
);
|
|
97
|
+
if (!table) {
|
|
98
|
+
throw new CubeLambdaReadError(`No table for ${JSON.stringify(source)}`);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
type: RelationalTableSource.TYPE,
|
|
102
|
+
create: (id) =>
|
|
103
|
+
new RelationalTableSource(
|
|
104
|
+
id,
|
|
105
|
+
{
|
|
106
|
+
database: table.database,
|
|
107
|
+
schema: table.schema,
|
|
108
|
+
table: table.table,
|
|
109
|
+
},
|
|
110
|
+
table.resolution,
|
|
111
|
+
),
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The query with each Filter by Expression checked, as the editor has the
|
|
117
|
+
* engine check them on import: the samples' conditions are all Booleans
|
|
118
|
+
*/
|
|
119
|
+
export const TEST__checkedAsTheEngineWould = (query: Query): Query =>
|
|
120
|
+
query.nodes.reduce((checked, node) => {
|
|
121
|
+
if (!(node instanceof ExpressionFilter) || !node.lambda) {
|
|
122
|
+
return checked;
|
|
123
|
+
}
|
|
124
|
+
const [inputId] = checked.getInputIds(node.id);
|
|
125
|
+
const input =
|
|
126
|
+
inputId === undefined
|
|
127
|
+
? undefined
|
|
128
|
+
: buildSchemasAndValidity(checked).schemas.get(inputId);
|
|
129
|
+
return input
|
|
130
|
+
? checked.replace(
|
|
131
|
+
node.withCheck({
|
|
132
|
+
kind: 'checked',
|
|
133
|
+
signature: getExpressionFilterSignature(input, node.lambda),
|
|
134
|
+
}),
|
|
135
|
+
)
|
|
136
|
+
: checked;
|
|
137
|
+
}, query);
|
|
@@ -129,3 +129,37 @@ export const TEST__closeAddItems = async (): Promise<void> => {
|
|
|
129
129
|
fireEvent.keyDown(screen.getByRole('menu'), { key: 'Escape' });
|
|
130
130
|
await waitFor(() => expect(screen.queryByRole('menu')).toBeNull());
|
|
131
131
|
};
|
|
132
|
+
|
|
133
|
+
/** Opens 'Cube' (New, Import, Export) in the graph's header and returns its menu */
|
|
134
|
+
export const TEST__openCubeMenu = async (): Promise<HTMLElement> => {
|
|
135
|
+
fireEvent.click(
|
|
136
|
+
within(screen.getByTestId(LEGEND_CUBE_TEST_ID.GRAPH_REGION)).getByRole(
|
|
137
|
+
'button',
|
|
138
|
+
{ name: 'Cube' },
|
|
139
|
+
),
|
|
140
|
+
);
|
|
141
|
+
return screen.findByRole('menu');
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
/** Chooses an item of the 'Cube' menu (New, Import or Export), and waits for the menu to close */
|
|
145
|
+
export const TEST__chooseCubeMenuItem = async (
|
|
146
|
+
label: string,
|
|
147
|
+
): Promise<void> => {
|
|
148
|
+
const menu = await TEST__openCubeMenu();
|
|
149
|
+
fireEvent.click(within(menu).getByRole('menuitem', { name: label }));
|
|
150
|
+
await waitFor(() => expect(screen.queryByRole('menu')).toBeNull());
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/** Whether an item of the 'Cube' menu is disabled; the menu is closed again */
|
|
154
|
+
export const TEST__isCubeMenuItemDisabled = async (
|
|
155
|
+
label: string,
|
|
156
|
+
): Promise<boolean> => {
|
|
157
|
+
const menu = await TEST__openCubeMenu();
|
|
158
|
+
const disabled =
|
|
159
|
+
within(menu)
|
|
160
|
+
.getByRole('menuitem', { name: label })
|
|
161
|
+
.getAttribute('aria-disabled') === 'true';
|
|
162
|
+
fireEvent.keyDown(menu, { key: 'Escape' });
|
|
163
|
+
await waitFor(() => expect(screen.queryByRole('menu')).toBeNull());
|
|
164
|
+
return disabled;
|
|
165
|
+
};
|
|
@@ -22,6 +22,11 @@ import {
|
|
|
22
22
|
LegendApplicationPluginManager,
|
|
23
23
|
} from '@finos/legend-application';
|
|
24
24
|
import { TEST__getApplicationVersionData } from '@finos/legend-application/test';
|
|
25
|
+
import { jest } from '@jest/globals';
|
|
26
|
+
import {
|
|
27
|
+
type CubeEngineClientControls,
|
|
28
|
+
CubeEngineClientSettings,
|
|
29
|
+
} from '../graph-manager/CubeEngineClientSettings.js';
|
|
25
30
|
import type { CubeHost } from '../stores/CubeHost.js';
|
|
26
31
|
import { LocalModelCatalog } from '../stores/LocalModelCatalog.js';
|
|
27
32
|
import {
|
|
@@ -73,6 +78,9 @@ export const TEST__createCubeApplicationStore = (
|
|
|
73
78
|
);
|
|
74
79
|
};
|
|
75
80
|
|
|
81
|
+
/** The engine URL a test host is configured with */
|
|
82
|
+
export const TEST__CUBE_ENGINE_URL = 'http://localhost:6300/api';
|
|
83
|
+
|
|
76
84
|
/** A host over fakes of the engine, the connection explorer and the data product catalog, with the bundled models */
|
|
77
85
|
export const TEST__createCubeHost = (
|
|
78
86
|
answers?: FakeCubeEngineAnswers,
|
|
@@ -82,8 +90,23 @@ export const TEST__createCubeHost = (
|
|
|
82
90
|
fake: FakeCubeEngine;
|
|
83
91
|
connections: FakeCubeConnectionExplorer;
|
|
84
92
|
dataProducts: FakeCubeDataProductCatalog;
|
|
93
|
+
/** An engine client registered with the host's engine client settings */
|
|
94
|
+
engineClient: {
|
|
95
|
+
setBaseUrl: jest.Mock<CubeEngineClientControls['setBaseUrl']>;
|
|
96
|
+
setCompression: jest.Mock<CubeEngineClientControls['setCompression']>;
|
|
97
|
+
};
|
|
85
98
|
} => {
|
|
86
99
|
const fake = createFakeCubeEngine(answers);
|
|
100
|
+
const engineClientSettings = new CubeEngineClientSettings({
|
|
101
|
+
baseUrl: TEST__CUBE_ENGINE_URL,
|
|
102
|
+
enableCompression: true,
|
|
103
|
+
});
|
|
104
|
+
const engineClient = {
|
|
105
|
+
setBaseUrl: jest.fn<CubeEngineClientControls['setBaseUrl']>(),
|
|
106
|
+
setCompression: jest.fn<CubeEngineClientControls['setCompression']>(),
|
|
107
|
+
};
|
|
108
|
+
engineClientSettings.register(engineClient);
|
|
109
|
+
engineClient.setCompression.mockClear();
|
|
87
110
|
const connections = createFakeCubeConnectionExplorer();
|
|
88
111
|
const dataProducts = createFakeCubeDataProductCatalog();
|
|
89
112
|
return {
|
|
@@ -93,9 +116,11 @@ export const TEST__createCubeHost = (
|
|
|
93
116
|
modelCatalog: new LocalModelCatalog(fake.engine),
|
|
94
117
|
connectionExplorer: connections.explorer,
|
|
95
118
|
dataProductCatalog: dataProducts.catalog,
|
|
119
|
+
engineClientSettings,
|
|
96
120
|
},
|
|
97
121
|
fake,
|
|
98
122
|
connections,
|
|
99
123
|
dataProducts,
|
|
124
|
+
engineClient,
|
|
100
125
|
};
|
|
101
126
|
};
|
|
@@ -71,6 +71,20 @@ export const FAKE_NORTHWIND_OUTLINE: CubeModelOutline = {
|
|
|
71
71
|
],
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
+
/** The Northwind outline, its runtime's connection of this database type */
|
|
75
|
+
export const createFakeNorthwindOutline = (
|
|
76
|
+
databaseType: string,
|
|
77
|
+
): CubeModelOutline => ({
|
|
78
|
+
...FAKE_NORTHWIND_OUTLINE,
|
|
79
|
+
runtimes: [
|
|
80
|
+
{
|
|
81
|
+
path: NORTHWIND_RUNTIME,
|
|
82
|
+
storePaths: [NORTHWIND_DATABASE],
|
|
83
|
+
connections: [{ storePath: NORTHWIND_DATABASE, databaseType }],
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
});
|
|
87
|
+
|
|
74
88
|
/** The schemas the fake gives, keyed by `<schema>.<table>` as the outline names them */
|
|
75
89
|
export const FAKE_NORTHWIND_SCHEMAS: ReadonlyMap<string, Schema> = new Map([
|
|
76
90
|
['NORTHWIND.ORDERS', new Schema(ORDERS_COLUMNS)],
|
|
@@ -89,6 +103,7 @@ export interface FakeCubeEngineAnswers {
|
|
|
89
103
|
/** keyed by `<schema>.<table>`; a table not in it gets a compile error */
|
|
90
104
|
readonly schemas?: ReadonlyMap<string, Schema>;
|
|
91
105
|
readonly result?: CubeResult;
|
|
106
|
+
readonly csv?: string;
|
|
92
107
|
readonly pure?: string;
|
|
93
108
|
}
|
|
94
109
|
|
|
@@ -98,7 +113,9 @@ export interface FakeCubeEngine {
|
|
|
98
113
|
readonly resolveSchemas: jest.Mock<CubeEngine['resolveSchemas']>;
|
|
99
114
|
readonly typeLambdas: jest.Mock<CubeEngine['typeLambdas']>;
|
|
100
115
|
readonly execute: jest.Mock<CubeEngine['execute']>;
|
|
116
|
+
readonly exportCsv: jest.Mock<CubeEngine['exportCsv']>;
|
|
101
117
|
readonly renderPure: jest.Mock<CubeEngine['renderPure']>;
|
|
118
|
+
readonly serializeLambda: jest.Mock<CubeEngine['serializeLambda']>;
|
|
102
119
|
readonly parseExpression: jest.Mock<CubeEngine['parseExpression']>;
|
|
103
120
|
readonly planLambda: jest.Mock<CubeEngine['planLambda']>;
|
|
104
121
|
}
|
|
@@ -133,9 +150,15 @@ export const createFakeCubeEngine = (
|
|
|
133
150
|
const execute = jest.fn<CubeEngine['execute']>(async () =>
|
|
134
151
|
Promise.resolve(answers.result ?? EMPTY_CUBE_RESULT),
|
|
135
152
|
);
|
|
153
|
+
const exportCsv = jest.fn<CubeEngine['exportCsv']>(async () =>
|
|
154
|
+
Promise.resolve(answers.csv ?? ''),
|
|
155
|
+
);
|
|
136
156
|
const renderPure = jest.fn<CubeEngine['renderPure']>(async () =>
|
|
137
157
|
Promise.resolve(answers.pure ?? ''),
|
|
138
158
|
);
|
|
159
|
+
const serializeLambda = jest.fn<CubeEngine['serializeLambda']>((lambda) =>
|
|
160
|
+
JSON.stringify(lambda, undefined, 2),
|
|
161
|
+
);
|
|
139
162
|
// a test that types expressions says how; by default, each parses to nothing
|
|
140
163
|
const parseExpression = jest.fn<CubeEngine['parseExpression']>(async () =>
|
|
141
164
|
Promise.reject(
|
|
@@ -154,7 +177,9 @@ export const createFakeCubeEngine = (
|
|
|
154
177
|
resolveSchemas,
|
|
155
178
|
typeLambdas,
|
|
156
179
|
execute,
|
|
180
|
+
exportCsv,
|
|
157
181
|
renderPure,
|
|
182
|
+
serializeLambda,
|
|
158
183
|
parseExpression,
|
|
159
184
|
planLambda,
|
|
160
185
|
},
|
|
@@ -162,7 +187,9 @@ export const createFakeCubeEngine = (
|
|
|
162
187
|
resolveSchemas,
|
|
163
188
|
typeLambdas,
|
|
164
189
|
execute,
|
|
190
|
+
exportCsv,
|
|
165
191
|
renderPure,
|
|
192
|
+
serializeLambda,
|
|
166
193
|
parseExpression,
|
|
167
194
|
planLambda,
|
|
168
195
|
};
|
|
@@ -84,6 +84,24 @@ const DATA_SETS: ReadonlyMap<string, readonly CubeIngestDataSet[]> = new Map([
|
|
|
84
84
|
],
|
|
85
85
|
]);
|
|
86
86
|
|
|
87
|
+
export const FAKE_INGEST_FILLS_SCHEMA = new Schema([
|
|
88
|
+
new SchemaColumn('FILL_ID', PrimitiveType.get('Integer'), false),
|
|
89
|
+
new SchemaColumn('QUANTITY', PrimitiveType.get('Integer'), false),
|
|
90
|
+
]);
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The orders definition's data sets with a second one that can be added,
|
|
94
|
+
* FILLS, for picking several at once: what `describe` gives when mocked so
|
|
95
|
+
*/
|
|
96
|
+
export const FAKE_INGEST_ORDERS_WITH_FILLS: readonly CubeIngestDataSet[] = [
|
|
97
|
+
...(DATA_SETS.get(FAKE_INGEST_ORDERS) ?? []),
|
|
98
|
+
new CubeIngestDataSet({
|
|
99
|
+
name: 'FILLS',
|
|
100
|
+
schema: FAKE_INGEST_FILLS_SCHEMA,
|
|
101
|
+
primaryKey: ['FILL_ID'],
|
|
102
|
+
}),
|
|
103
|
+
];
|
|
104
|
+
|
|
87
105
|
const definitionOf = (urn: string): string =>
|
|
88
106
|
urn.slice(urn.lastIndexOf('~') + 1);
|
|
89
107
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { jest } from '@jest/globals';
|
|
18
|
+
import type {
|
|
19
|
+
CubeServiceCatalog,
|
|
20
|
+
CubeServiceSummary,
|
|
21
|
+
} from '../graph-manager/CubeServiceCatalog.js';
|
|
22
|
+
|
|
23
|
+
// A fake of the engine's service registry, for the Service tab's and the
|
|
24
|
+
// editor's tests: two trading services, one without a title
|
|
25
|
+
|
|
26
|
+
export const FAKE_TRADES_SERVICE: CubeServiceSummary = {
|
|
27
|
+
name: 'trading::services::TradesByDesk',
|
|
28
|
+
title: 'Trades by desk',
|
|
29
|
+
pattern: '/trades/byDesk',
|
|
30
|
+
documentation: 'Every trade, by desk',
|
|
31
|
+
owners: ['alice', 'bob'],
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const FAKE_DESKS_SERVICE: CubeServiceSummary = {
|
|
35
|
+
name: 'trading::services::Desks',
|
|
36
|
+
pattern: '/desks',
|
|
37
|
+
documentation: '',
|
|
38
|
+
owners: ['Deployment 1234'],
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export interface FakeCubeServiceCatalog {
|
|
42
|
+
readonly catalog: CubeServiceCatalog;
|
|
43
|
+
readonly listServices: jest.Mock<CubeServiceCatalog['listServices']>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** A fresh fake: build one per test, since jest.fn keeps its calls across tests */
|
|
47
|
+
export const createFakeCubeServiceCatalog = (
|
|
48
|
+
services: readonly CubeServiceSummary[] = [
|
|
49
|
+
FAKE_DESKS_SERVICE,
|
|
50
|
+
FAKE_TRADES_SERVICE,
|
|
51
|
+
],
|
|
52
|
+
): FakeCubeServiceCatalog => {
|
|
53
|
+
const listServices = jest.fn<CubeServiceCatalog['listServices']>(async () =>
|
|
54
|
+
Promise.resolve(services),
|
|
55
|
+
);
|
|
56
|
+
return { catalog: { listServices }, listServices };
|
|
57
|
+
};
|
|
@@ -28,10 +28,15 @@ import {
|
|
|
28
28
|
import type { AnyNodeDefinition } from '@finos/legend-cube';
|
|
29
29
|
import { observer } from 'mobx-react-lite';
|
|
30
30
|
import {
|
|
31
|
+
getCubeNodeBadge,
|
|
31
32
|
OTHER_SOURCE_KIND_TITLE,
|
|
32
33
|
READ_ONLY_CUBE_TITLE,
|
|
33
34
|
} from '../__lib__/LegendCubeLabels.js';
|
|
34
|
-
import {
|
|
35
|
+
import {
|
|
36
|
+
addCubeNode,
|
|
37
|
+
canAddCubeNode,
|
|
38
|
+
getCubeAddDatabaseProblem,
|
|
39
|
+
} from '../stores/CubeAddPlacement.js';
|
|
35
40
|
import type { CubeEditorState } from '../stores/CubeEditorState.js';
|
|
36
41
|
import { CubeNodeIcon } from './CubeNodeIcon.js';
|
|
37
42
|
|
|
@@ -40,7 +45,7 @@ interface CubeAddItem {
|
|
|
40
45
|
readonly definition: AnyNodeDefinition;
|
|
41
46
|
readonly label: string;
|
|
42
47
|
readonly disabled: boolean;
|
|
43
|
-
/** Why a source can't be added */
|
|
48
|
+
/** Why a source, or a transform its database can't run, can't be added */
|
|
44
49
|
readonly title: string | undefined;
|
|
45
50
|
readonly add: () => void;
|
|
46
51
|
}
|
|
@@ -59,14 +64,16 @@ const getCubeAddItems = (
|
|
|
59
64
|
): { sources: CubeAddItem[]; transforms: CubeAddItem[] } => {
|
|
60
65
|
const item = (definition: AnyNodeDefinition): CubeAddItem => {
|
|
61
66
|
const disabled = !canAddCubeNode(editorState, definition.type, nodeId);
|
|
67
|
+
const badge = getCubeNodeBadge(definition);
|
|
62
68
|
return {
|
|
63
69
|
definition,
|
|
64
|
-
label: `${definition.label}${
|
|
70
|
+
label: `${definition.label}${badge ? ` (${badge})` : ''}`,
|
|
65
71
|
disabled,
|
|
66
|
-
title:
|
|
67
|
-
|
|
72
|
+
title: !disabled
|
|
73
|
+
? undefined
|
|
74
|
+
: definition.kind === 'source'
|
|
68
75
|
? (editorState.sourcePicker.disabledReason ?? OTHER_SOURCE_KIND_TITLE)
|
|
69
|
-
:
|
|
76
|
+
: getCubeAddDatabaseProblem(editorState, definition.type, nodeId),
|
|
70
77
|
add: () => addCubeNode(editorState, definition.type, nodeId),
|
|
71
78
|
};
|
|
72
79
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The `darkMode` Cube's dialogs give their primary footer button (Add,
|
|
19
|
+
* Apply, Close): always legend-art's "dark" variant, which its styles now
|
|
20
|
+
* draw from the theme's tokens in every theme, an accent button. In a light
|
|
21
|
+
* theme, its "light" variant, a legacy alias, draws it grey, so an enabled
|
|
22
|
+
* Add looked disabled. The dialog and its secondary buttons keep following
|
|
23
|
+
* the theme: the "dark" variant would draw the title dark on the blue header
|
|
24
|
+
*/
|
|
25
|
+
export const CUBE_PRIMARY_BUTTON_DARK_MODE = true;
|