drizzle-cube 0.5.7 → 0.6.0
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 +2 -0
- package/dist/adapters/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +6 -81
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +50 -50
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +78 -78
- package/dist/adapters/google-BOnRIN1w.cjs +2 -0
- package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
- package/dist/adapters/{handler-Dz1F4iwf.js → handler-CfgE0JSL.js} +515 -578
- package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +208 -178
- package/dist/adapters/locale-DDvZDFVn.js +8114 -0
- package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +49 -38
- package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
- package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +190 -197
- package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/{server/openai-DiVskd89.js → adapters/openai-cDlFSTk6.js} +61 -59
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- package/dist/adapters/{utils-DosuoabY.js → utils-BPWZsX7k.js} +1285 -1220
- package/dist/adapters/utils-_whV4fXL.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +2 -2
- package/dist/client/charts/ChartLoader.d.ts +3 -17
- package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
- package/dist/client/charts.js +14 -13
- package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-okVfH8ZK.js} +5446 -4486
- package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
- package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
- package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
- package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DX0SJbxs.js} +642 -494
- package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
- package/dist/client/chunks/chart-area-of01_62R.js +775 -0
- package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-kkBixZ27.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
- package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
- package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-DZp19Tzh.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-DZp19Tzh.js.map} +1 -1
- package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
- package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
- package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
- package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
- package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
- package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
- package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
- package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
- package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
- package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
- package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
- package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
- package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-CKauQXme.js} +1046 -1121
- package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-CToKSBaL.js} +184 -222
- package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
- package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-CV75S_zL.js} +1359 -1240
- package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
- package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
- package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-DjrvKw6K.js} +36 -39
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-leGpuDj7.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-DyvQReN5.js} +7 -7
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
- package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
- package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
- package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
- package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-2zTAWTej.js} +8 -2
- package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-2zTAWTej.js.map} +1 -1
- package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-Cb_E9_Gd.js} +12 -12
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
- package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-evnZkjCY.js} +14 -14
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
- package/dist/client/chunks/{utils-kqa-JIMg.js → utils-3P6z1vz5.js} +3 -3
- package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-3P6z1vz5.js.map} +1 -1
- package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-DSpR0IW6.js} +43 -43
- package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-DSpR0IW6.js.map} +1 -1
- package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
- package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
- package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
- package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
- package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
- package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
- package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +5 -0
- package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
- package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPage.d.ts +1 -1
- package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +1 -1
- package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
- package/dist/client/components/DashboardEditModal.d.ts +2 -1
- package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
- package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
- package/dist/client/components/DashboardGrid.d.ts +1 -1
- package/dist/client/components/DashboardPortletCard.d.ts +2 -57
- package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
- package/dist/client/components/DataBrowser/index.d.ts +1 -1
- package/dist/client/components/DataHistogram.d.ts +1 -1
- package/dist/client/components/DebugModal.d.ts +1 -1
- package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
- package/dist/client/components/LoadingIndicator.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +1 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +1 -1
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
- package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
- package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
- package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
- package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
- package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
- package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
- package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/client/components/charts/AxisFormatControls.d.ts +5 -3
- package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
- package/dist/client/components/charts/BarSeries.d.ts +29 -0
- package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/client/components/charts/ChartContainer.d.ts +1 -1
- package/dist/client/components/charts/ChartLegend.d.ts +1 -1
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
- package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
- package/dist/client/components/charts/FunnelViews.d.ts +16 -0
- package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
- package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
- package/dist/client/components/charts/KpiStates.d.ts +19 -0
- package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
- package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
- package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
- package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
- package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
- package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
- package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
- package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
- package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
- package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
- package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
- package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
- package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
- package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
- package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
- package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
- package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
- package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
- package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
- package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
- package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
- package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
- package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
- package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
- package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
- package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
- package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
- package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
- package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
- package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
- package/dist/client/components/shared/utils.d.ts +4 -43
- package/dist/client/components.js +3 -3
- package/dist/client/hooks/agentChatStream.d.ts +39 -0
- package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.d.ts +1 -1
- package/dist/client/icons.js +2 -2
- package/dist/client/index.js +816 -669
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeApiProvider.d.ts +1 -1
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers/I18nProvider.d.ts +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/client/shared/queryTransforms.d.ts +20 -0
- package/dist/client/shared/utils.d.ts +2 -4
- package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
- package/dist/client/stores/dashboardStore.d.ts +1 -1
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/types/drill.d.ts +1 -1
- package/dist/client/types.d.ts +7 -2
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +33 -5
- package/dist/client/utils/joinReachability.d.ts +27 -0
- package/dist/client/utils/timeValueFormatting.d.ts +32 -0
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +55 -55
- package/dist/server/google-BOnRIN1w.cjs +2 -0
- package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +6360 -6462
- package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/{adapters/openai-DiVskd89.js → server/openai-cDlFSTk6.js} +61 -59
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/server/adapters/base-adapter.d.ts +332 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +63 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +68 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +65 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +55 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +53 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +120 -0
- package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/server/agent/chart-validation.d.ts +22 -0
- package/dist/server/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/server/agent/handler.d.ts +25 -0
- package/dist/server/server/agent/index.d.ts +11 -0
- package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/server/server/agent/providers/factory.d.ts +12 -0
- package/dist/server/server/agent/providers/google.d.ts +23 -0
- package/dist/server/server/agent/providers/index.d.ts +6 -0
- package/dist/server/server/agent/providers/openai.d.ts +26 -0
- package/dist/server/server/agent/providers/types.d.ts +95 -0
- package/dist/server/server/agent/system-prompt.d.ts +5 -0
- package/dist/server/server/agent/tools.d.ts +28 -0
- package/dist/server/server/agent/types.d.ts +192 -0
- package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/server/ai/discovery.d.ts +66 -0
- package/dist/server/server/ai/index.d.ts +10 -0
- package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/server/server/ai/query-schema.d.ts +258 -0
- package/dist/server/server/ai/schemas.d.ts +63 -0
- package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/server/ai/suggestion.d.ts +16 -0
- package/dist/server/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/server/ai/validation.d.ts +31 -0
- package/dist/server/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +108 -0
- package/dist/server/server/builders/date-time-builder.d.ts +34 -0
- package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/server/builders/filter-builder.d.ts +25 -0
- package/dist/server/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +136 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +145 -0
- package/dist/server/server/builders/group-by-builder.d.ts +38 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +185 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +98 -0
- package/dist/server/server/cache-providers/index.d.ts +5 -0
- package/dist/server/server/cache-providers/memory.d.ts +105 -0
- package/dist/server/server/cache-utils.d.ts +85 -0
- package/dist/server/server/compiler-metadata.d.ts +11 -0
- package/dist/server/server/compiler.d.ts +212 -0
- package/dist/server/server/cube-utils.d.ts +158 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- package/dist/server/server/execution/annotation-builder.d.ts +12 -0
- package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/server/server/execution/mode-router.d.ts +25 -0
- package/dist/server/server/execution/query-result-cache.d.ts +21 -0
- package/dist/server/server/execution/result-post-processor.d.ts +10 -0
- package/dist/server/server/executor.d.ts +186 -0
- package/dist/server/server/executors/base-executor.d.ts +16 -0
- package/dist/server/server/executors/databend-executor.d.ts +33 -0
- package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/server/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/server/executors/index.d.ts +21 -0
- package/dist/server/server/executors/mysql-executor.d.ts +27 -0
- package/dist/server/server/executors/postgres-executor.d.ts +27 -0
- package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/server/server/explain/databend-parser.d.ts +16 -0
- package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/server/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/server/explain/index.d.ts +9 -0
- package/dist/server/server/explain/mysql-parser.d.ts +38 -0
- package/dist/server/server/explain/postgres-parser.d.ts +18 -0
- package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/server/server/filter-cache.d.ts +73 -0
- package/dist/server/server/gap-filler.d.ts +48 -0
- package/dist/server/server/index.d.ts +38 -0
- package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/server/server/logical-plan/index.d.ts +19 -0
- package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +39 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +34 -0
- package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/server/server/logical-plan/types.d.ts +199 -0
- package/dist/server/server/measure-classification.d.ts +40 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
- package/dist/server/server/physical-plan/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +8 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +38 -0
- package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/server/server/prompts/index.d.ts +27 -0
- package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/server/server/prompts/types.d.ts +37 -0
- package/dist/server/server/query-handlers.d.ts +79 -0
- package/dist/server/server/query-modes.d.ts +28 -0
- package/dist/server/server/query-validator.d.ts +9 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +98 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +158 -0
- package/dist/server/server/sql-format.d.ts +11 -0
- package/dist/server/server/template-substitution.d.ts +57 -0
- package/dist/server/server/types/analysis.d.ts +189 -0
- package/dist/server/server/types/cache.d.ts +132 -0
- package/dist/server/server/types/core.d.ts +164 -0
- package/dist/server/server/types/cube.d.ts +544 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +144 -0
- package/dist/server/server/types/funnel.d.ts +118 -0
- package/dist/server/server/types/index.d.ts +11 -0
- package/dist/server/server/types/metadata.d.ts +113 -0
- package/dist/server/server/types/query.d.ts +153 -0
- package/dist/server/server/types/retention.d.ts +141 -0
- package/dist/server/server/types/utils.d.ts +11 -0
- package/dist/server/server/types/validation.d.ts +14 -0
- package/package.json +15 -8
- package/dist/adapters/google-DUlXeeDA.cjs +0 -2
- package/dist/adapters/handler-C63rJUUK.cjs +0 -25
- package/dist/adapters/locale-CTNwPVZI.cjs +0 -198
- package/dist/adapters/locale-gU_d1Wja.js +0 -8249
- package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
- package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
- package/dist/adapters/openai-6wrBvAnv.cjs +0 -1
- package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
- package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-x576-O5p.js.map +0 -1
- package/dist/client/chunks/analysis-builder-zd48FVJO.js +0 -5367
- package/dist/client/chunks/analysis-builder-zd48FVJO.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CiHrLH6Y.js.map +0 -1
- package/dist/client/chunks/chart-area-CXFK-Grv.js +0 -450
- package/dist/client/chunks/chart-area-CXFK-Grv.js.map +0 -1
- package/dist/client/chunks/chart-bar-DKXfLoGG.js +0 -271
- package/dist/client/chunks/chart-bar-DKXfLoGG.js.map +0 -1
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js +0 -273
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js.map +0 -1
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
- package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
- package/dist/client/chunks/chart-data-table-Cm5jrpaw.js.map +0 -1
- package/dist/client/chunks/chart-funnel-Eke8IPtG.js.map +0 -1
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js +0 -424
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js +0 -231
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js +0 -343
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js +0 -322
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js +0 -149
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js.map +0 -1
- package/dist/client/chunks/chart-line-r4iWevKZ.js +0 -433
- package/dist/client/chunks/chart-line-r4iWevKZ.js.map +0 -1
- package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
- package/dist/client/chunks/chart-pie-yqH2YVEI.js +0 -172
- package/dist/client/chunks/chart-pie-yqH2YVEI.js.map +0 -1
- package/dist/client/chunks/chart-radar-B-_3v-rE.js +0 -154
- package/dist/client/chunks/chart-radar-B-_3v-rE.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js +0 -148
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js.map +0 -1
- package/dist/client/chunks/chart-scatter-DZPirzwX.js +0 -255
- package/dist/client/chunks/chart-scatter-DZPirzwX.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js +0 -298
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-B5wCDJSj.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-6wrBvAnv.cjs +0 -1
- package/dist/server/openai-BDwb2u7y.cjs +0 -17
- /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
- /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
- /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
- /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
- /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
- /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
- /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
- /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { SQL } from 'drizzle-orm';
|
|
2
|
+
import { Cube, Filter, QueryContext } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Type for CTE objects created by db.$with()
|
|
5
|
+
* These can be used with db.with(...ctes).select().from(cte)
|
|
6
|
+
*/
|
|
7
|
+
export type WithSubquery = ReturnType<ReturnType<any['$with']>['as']>;
|
|
8
|
+
/**
|
|
9
|
+
* Combine an array of WHERE/JOIN conditions into a single SQL expression.
|
|
10
|
+
*
|
|
11
|
+
* - `[]` → undefined (no condition)
|
|
12
|
+
* - single element → that element verbatim
|
|
13
|
+
* - multiple → `and(...conditions)`
|
|
14
|
+
*
|
|
15
|
+
* Mirrors the inline `conditions.length === 1 ? conditions[0] : and(...conditions) as SQL`
|
|
16
|
+
* pattern that was duplicated across the analysis builders.
|
|
17
|
+
*/
|
|
18
|
+
export declare function combineWhere(conditions: SQL[]): SQL | undefined;
|
|
19
|
+
/** The combinator + children of a client-style group filter. */
|
|
20
|
+
export interface GroupFilterParts {
|
|
21
|
+
/** True for an AND group, false for OR. */
|
|
22
|
+
isAnd: boolean;
|
|
23
|
+
filters: Filter[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Normalise a client-style group filter.
|
|
27
|
+
*
|
|
28
|
+
* The analysis UIs sometimes emit groups as `{ type: 'and' | 'or', filters: [...] }`
|
|
29
|
+
* rather than the canonical `{ and: [...] }` / `{ or: [...] }` (this shape is not part
|
|
30
|
+
* of the `Filter` type; the builders accept it defensively). Returns the group's
|
|
31
|
+
* combinator + children, or `null` if `filter` isn't a client group filter.
|
|
32
|
+
*/
|
|
33
|
+
export declare function asGroupFilter(filter: Filter): GroupFilterParts | null;
|
|
34
|
+
/**
|
|
35
|
+
* A single multi-cube field mapping (binding key or time dimension), e.g.
|
|
36
|
+
* `{ cube: 'Events', dimension: 'Events.userId' }`.
|
|
37
|
+
*/
|
|
38
|
+
type FieldMapping = {
|
|
39
|
+
cube: string;
|
|
40
|
+
dimension: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The i18n namespaces whose binding-key / time-dimension leaf keys are identical.
|
|
44
|
+
* Funnel and flow share the exact same leaf keys under these two prefixes, which
|
|
45
|
+
* is what lets the resolution logic below be shared. (Retention uses a different
|
|
46
|
+
* leaf-key set — see `bindingKeyErrorsForPrefix` vs the bespoke config it passes.)
|
|
47
|
+
*/
|
|
48
|
+
type AnalysisErrorPrefix = 'server.errors.funnel' | 'server.errors.flow';
|
|
49
|
+
/**
|
|
50
|
+
* Extract the dimension name from a `'Cube.dim'` or bare `'dim'` reference.
|
|
51
|
+
* (`'Cube.dim'` → `'dim'`, `'dim'` → `'dim'`.) Funnel/flow only ever pass the
|
|
52
|
+
* qualified form, so this is a strict superset of their old `.split('.')[1]`.
|
|
53
|
+
*/
|
|
54
|
+
export declare function extractDimensionName(dimension: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Builders of the i18n error strings thrown while resolving a binding key.
|
|
57
|
+
* Each builder receives the resolved context so callers can preserve their exact
|
|
58
|
+
* existing message keys/params (funnel/flow and retention use different leaf keys).
|
|
59
|
+
*/
|
|
60
|
+
export interface BindingKeyErrors {
|
|
61
|
+
/** Array form: no mapping in the array matched the current cube. */
|
|
62
|
+
noMapping: (ctx: {
|
|
63
|
+
cubeName: string;
|
|
64
|
+
}) => string;
|
|
65
|
+
/** The cube named in the key/mapping was not found in the `cubes` registry. */
|
|
66
|
+
cubeNotFound?: (ctx: {
|
|
67
|
+
cubeName: string;
|
|
68
|
+
}) => string;
|
|
69
|
+
/** String form: the binding-key dimension was not found on the resolved cube. */
|
|
70
|
+
keyDimNotFound: (ctx: {
|
|
71
|
+
bindingKey: string;
|
|
72
|
+
cubeName: string;
|
|
73
|
+
dimName: string;
|
|
74
|
+
}) => string;
|
|
75
|
+
/** Array form: the mapped dimension was not found on the resolved cube. */
|
|
76
|
+
mappingDimNotFound: (ctx: {
|
|
77
|
+
dimension: string;
|
|
78
|
+
cubeName: string;
|
|
79
|
+
dimName: string;
|
|
80
|
+
}) => string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Build the binding-key error messages for funnel/flow from their shared i18n
|
|
84
|
+
* namespace (the leaf keys are identical across the two prefixes).
|
|
85
|
+
*/
|
|
86
|
+
export declare function bindingKeyErrorsForPrefix(errorPrefix: AnalysisErrorPrefix): BindingKeyErrors;
|
|
87
|
+
/**
|
|
88
|
+
* Resolve a binding-key SQL expression for the analysis builders.
|
|
89
|
+
*
|
|
90
|
+
* Accepts a `'Cube.dim'` string or an array of `{ cube, dimension }` mappings.
|
|
91
|
+
* `errors` supplies the i18n messages (funnel/flow share one leaf-key set via
|
|
92
|
+
* `bindingKeyErrorsForPrefix`; retention passes its own). When `cubes` is given,
|
|
93
|
+
* the dimension is resolved on the cube named in the key (retention's multi-cube
|
|
94
|
+
* semantics); otherwise it is resolved on `cube` (funnel/flow).
|
|
95
|
+
*/
|
|
96
|
+
export declare function resolveBindingKeyExpr(bindingKey: string | FieldMapping[], cube: Cube, context: QueryContext, errors: BindingKeyErrors, cubes?: Map<string, Cube>): SQL;
|
|
97
|
+
/**
|
|
98
|
+
* Resolve a time-dimension SQL expression for funnel/flow builders.
|
|
99
|
+
*
|
|
100
|
+
* Accepts a `'Cube.dim'` string or an array of `{ cube, dimension }` mappings.
|
|
101
|
+
* `errorPrefix` selects the i18n namespace (the leaf keys are identical across
|
|
102
|
+
* funnel and flow): `<prefix>.timeDimNotFound`, `<prefix>.noTimeDimMapping`,
|
|
103
|
+
* `<prefix>.timeDimMappingNotFound`.
|
|
104
|
+
*/
|
|
105
|
+
export declare function resolveTimeDimensionExpr(timeDimension: string | FieldMapping[], cube: Cube, context: QueryContext, errorPrefix: AnalysisErrorPrefix): SQL;
|
|
106
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { SemanticQuery, TimeDimension, QueryResult, TimeGranularity } from '../types';
|
|
2
|
+
import { DatabaseAdapter } from '../adapters/base-adapter';
|
|
3
|
+
/**
|
|
4
|
+
* Normalized period range with start/end dates and metadata
|
|
5
|
+
*/
|
|
6
|
+
export interface NormalizedPeriod {
|
|
7
|
+
/** Start date of the period */
|
|
8
|
+
start: Date;
|
|
9
|
+
/** End date of the period */
|
|
10
|
+
end: Date;
|
|
11
|
+
/** Human-readable label for the period */
|
|
12
|
+
label: string;
|
|
13
|
+
/** Index in the comparison (0 = first/current, 1 = second/prior, etc.) */
|
|
14
|
+
index: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Extended result row with period metadata for alignment
|
|
18
|
+
*/
|
|
19
|
+
export interface ComparisonResultRow extends Record<string, unknown> {
|
|
20
|
+
/** Period label (e.g., "2024-01-01 - 2024-01-31") */
|
|
21
|
+
__period: string;
|
|
22
|
+
/** Period index (0 = current, 1 = prior, etc.) */
|
|
23
|
+
__periodIndex: number;
|
|
24
|
+
/** Day-of-period index for alignment in overlay mode */
|
|
25
|
+
__periodDayIndex: number;
|
|
26
|
+
}
|
|
27
|
+
export declare class ComparisonQueryBuilder {
|
|
28
|
+
private dateTimeBuilder;
|
|
29
|
+
constructor(databaseAdapter: DatabaseAdapter);
|
|
30
|
+
/**
|
|
31
|
+
* Check if a query contains compareDateRange
|
|
32
|
+
*/
|
|
33
|
+
hasComparison(query: SemanticQuery): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Get the time dimension with compareDateRange
|
|
36
|
+
*/
|
|
37
|
+
getComparisonTimeDimension(query: SemanticQuery): TimeDimension | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Normalize compareDateRange entries to concrete date ranges
|
|
40
|
+
* Handles both relative strings ('last 30 days') and explicit arrays (['2024-01-01', '2024-01-31'])
|
|
41
|
+
*/
|
|
42
|
+
normalizePeriods(compareDateRange: (string | [string, string])[]): NormalizedPeriod[];
|
|
43
|
+
/**
|
|
44
|
+
* Create sub-query for a specific period
|
|
45
|
+
* Replaces compareDateRange with a concrete dateRange for that period
|
|
46
|
+
*/
|
|
47
|
+
createPeriodQuery(query: SemanticQuery, period: NormalizedPeriod): SemanticQuery;
|
|
48
|
+
/**
|
|
49
|
+
* Calculate the day-of-period index for a date
|
|
50
|
+
* Used for aligning data points across periods in overlay mode
|
|
51
|
+
*/
|
|
52
|
+
calculatePeriodDayIndex(date: Date | string, periodStart: Date, granularity: TimeGranularity): number;
|
|
53
|
+
/**
|
|
54
|
+
* Add period metadata to result rows
|
|
55
|
+
*/
|
|
56
|
+
addPeriodMetadata(data: Record<string, unknown>[], period: NormalizedPeriod, timeDimensionKey: string, granularity: TimeGranularity): ComparisonResultRow[];
|
|
57
|
+
/**
|
|
58
|
+
* Merge results from multiple period queries
|
|
59
|
+
* Adds period metadata and creates combined result with annotation
|
|
60
|
+
*/
|
|
61
|
+
mergeComparisonResults(periodResults: Array<{
|
|
62
|
+
result: QueryResult;
|
|
63
|
+
period: NormalizedPeriod;
|
|
64
|
+
}>, timeDimension: TimeDimension, granularity: TimeGranularity): QueryResult;
|
|
65
|
+
/**
|
|
66
|
+
* Sort merged results by period index and then by time dimension
|
|
67
|
+
* Ensures consistent ordering for client-side processing
|
|
68
|
+
*/
|
|
69
|
+
sortComparisonResults(data: ComparisonResultRow[], timeDimensionKey: string): ComparisonResultRow[];
|
|
70
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { SQL } from 'drizzle-orm';
|
|
2
|
+
import { SemanticQuery, QueryContext, PhysicalQueryPlan, PropagatingFilter } from '../types';
|
|
3
|
+
import { DrizzleSqlBuilder } from '../physical-plan/drizzle-sql-builder';
|
|
4
|
+
/**
|
|
5
|
+
* CTE information type extracted from runtime physical plan context
|
|
6
|
+
*/
|
|
7
|
+
export type CTEInfo = NonNullable<PhysicalQueryPlan['preAggregationCTEs']>[0];
|
|
8
|
+
/**
|
|
9
|
+
* CTEBuilder handles the construction of Common Table Expressions
|
|
10
|
+
* for pre-aggregation in hasMany relationship queries.
|
|
11
|
+
*
|
|
12
|
+
* This enables efficient aggregation of "many" side data before joining,
|
|
13
|
+
* preventing the Cartesian product explosion that would occur with direct JOINs.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CTEBuilder {
|
|
16
|
+
private queryBuilder;
|
|
17
|
+
constructor(queryBuilder: DrizzleSqlBuilder);
|
|
18
|
+
/**
|
|
19
|
+
* Build pre-aggregation CTE for hasMany relationships
|
|
20
|
+
*
|
|
21
|
+
* Creates a CTE that:
|
|
22
|
+
* 1. Selects join keys and aggregated measures
|
|
23
|
+
* 2. Applies security context filtering
|
|
24
|
+
* 3. Groups by join keys and requested dimensions
|
|
25
|
+
* 4. Handles propagating filters from related cubes
|
|
26
|
+
* 5. Handles multi-hop join paths by absorbing intermediate tables (fan-out prevention)
|
|
27
|
+
*/
|
|
28
|
+
buildPreAggregationCTE(cteInfo: CTEInfo, query: SemanticQuery, context: QueryContext, queryPlan: PhysicalQueryPlan, preBuiltFilterMap?: Map<string, SQL[]>): any;
|
|
29
|
+
/**
|
|
30
|
+
* Build the SELECT map for a pre-aggregation CTE: join keys (or the
|
|
31
|
+
* intermediate primary-connected column), downstream join keys, aggregated
|
|
32
|
+
* measures, and requested dimensions / time dimensions from this cube.
|
|
33
|
+
*/
|
|
34
|
+
private buildCTESelections;
|
|
35
|
+
/** Add join-key columns (or the intermediate primary-connected column) to the CTE SELECT. */
|
|
36
|
+
private addJoinKeySelections;
|
|
37
|
+
/** Add downstream join-key columns so downstream cubes can be joined through this CTE. */
|
|
38
|
+
private addDownstreamKeySelections;
|
|
39
|
+
/** Add aggregated measure expressions to the CTE SELECT. */
|
|
40
|
+
private addMeasureSelections;
|
|
41
|
+
/** Add requested dimensions and time dimensions (from this cube) to the CTE SELECT. */
|
|
42
|
+
private addDimensionSelections;
|
|
43
|
+
/**
|
|
44
|
+
* Add JOINs to intermediate tables inside the CTE (multi-hop fan-out
|
|
45
|
+
* prevention). Joins from CTE-nearest to primary-nearest so each ON clause
|
|
46
|
+
* only references tables already in scope.
|
|
47
|
+
*/
|
|
48
|
+
private applyIntermediateJoins;
|
|
49
|
+
/**
|
|
50
|
+
* Assemble the full WHERE condition list for a pre-aggregation CTE: security
|
|
51
|
+
* context, regular dimension filters, time-dimension date filters, and
|
|
52
|
+
* propagating filters from related cubes.
|
|
53
|
+
*
|
|
54
|
+
* IMPORTANT: Only dimension filters are applied here; measure filters belong
|
|
55
|
+
* in the main query's HAVING clause.
|
|
56
|
+
*/
|
|
57
|
+
private buildCTEWhereConditions;
|
|
58
|
+
/**
|
|
59
|
+
* Build the time-dimension date filters (from `timeDimensions.dateRange` and
|
|
60
|
+
* `inDateRange` simple filters) plus propagating-filter subqueries for a CTE.
|
|
61
|
+
*/
|
|
62
|
+
private buildCTETimeFilters;
|
|
63
|
+
/**
|
|
64
|
+
* Build the GROUP BY fields for a pre-aggregation CTE: join keys (or the
|
|
65
|
+
* intermediate primary-connected column), downstream join keys, and requested
|
|
66
|
+
* dimensions / time dimensions. De-dupes named columns.
|
|
67
|
+
*/
|
|
68
|
+
private buildCTEGroupByFields;
|
|
69
|
+
/**
|
|
70
|
+
* Add join keys (and downstream join keys) to the CTE GROUP BY via the de-dupe
|
|
71
|
+
* callback. For multi-hop paths uses the intermediate table's
|
|
72
|
+
* primary-connected column (e.g. employees.department_id).
|
|
73
|
+
*/
|
|
74
|
+
private addJoinKeyGroupBy;
|
|
75
|
+
/**
|
|
76
|
+
* Build join condition for CTE
|
|
77
|
+
*
|
|
78
|
+
* Creates the ON clause for joining a CTE to the main query.
|
|
79
|
+
* Uses stored column objects for type-safe joins.
|
|
80
|
+
*
|
|
81
|
+
* For multi-hop paths with intermediate joins:
|
|
82
|
+
* - The CTE includes columns from intermediate tables
|
|
83
|
+
* - The join condition uses the intermediate's primary-connected column
|
|
84
|
+
* - Example: departments.id = employeeteams_agg.department_id (not employee_id!)
|
|
85
|
+
*/
|
|
86
|
+
buildCTEJoinCondition(joinCube: PhysicalQueryPlan['joinCubes'][0], cteAlias: string, queryPlan: PhysicalQueryPlan): SQL;
|
|
87
|
+
/**
|
|
88
|
+
* Resolve source-side join expression for CTE joins.
|
|
89
|
+
*
|
|
90
|
+
* When two cubes are both materialized as CTEs in the same query, join keys can
|
|
91
|
+
* still point to the original table column object (e.g. departments.id). In that
|
|
92
|
+
* case the table is no longer present in FROM/JOIN, so rewrite to the upstream CTE
|
|
93
|
+
* alias column (e.g. departments_agg.id).
|
|
94
|
+
*/
|
|
95
|
+
private resolveCTEJoinSourceColumn;
|
|
96
|
+
/**
|
|
97
|
+
* Build a subquery filter for propagating filters from related cubes.
|
|
98
|
+
*
|
|
99
|
+
* This generates: cteCube.FK IN (SELECT sourceCube.PK FROM sourceCube WHERE filters...)
|
|
100
|
+
*
|
|
101
|
+
* Example: For Productivity CTE with Employees.createdAt filter:
|
|
102
|
+
* employee_id IN (SELECT id FROM employees WHERE organisation_id = $1 AND created_at >= $date)
|
|
103
|
+
*
|
|
104
|
+
* For composite keys, uses EXISTS instead of IN for better database compatibility:
|
|
105
|
+
* EXISTS (SELECT 1 FROM source WHERE source.pk1 = cte.fk1 AND source.pk2 = cte.fk2 AND <filters>)
|
|
106
|
+
*/
|
|
107
|
+
buildPropagatingFilterSubquery(propFilter: PropagatingFilter, context: QueryContext): SQL | null;
|
|
108
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SQL, AnyColumn } from 'drizzle-orm';
|
|
2
|
+
import { QueryContext } from '../types';
|
|
3
|
+
import { DatabaseAdapter } from '../adapters/base-adapter';
|
|
4
|
+
export declare class DateTimeBuilder {
|
|
5
|
+
private databaseAdapter;
|
|
6
|
+
constructor(databaseAdapter: DatabaseAdapter);
|
|
7
|
+
/**
|
|
8
|
+
* Build time dimension expression with granularity using database adapter
|
|
9
|
+
*/
|
|
10
|
+
buildTimeDimensionExpression(dimensionSql: any, granularity: string | undefined, context: QueryContext): SQL;
|
|
11
|
+
/**
|
|
12
|
+
* Build date range condition for time dimensions
|
|
13
|
+
*/
|
|
14
|
+
buildDateRangeCondition(fieldExpr: AnyColumn | SQL, dateRange: string | string[]): SQL | null;
|
|
15
|
+
private rangeBetween;
|
|
16
|
+
/** Shift a normalized end value to end-of-day when its source was a date-only string. */
|
|
17
|
+
private endOfDayValue;
|
|
18
|
+
private buildArrayDateRangeCondition;
|
|
19
|
+
private buildStringDateRangeCondition;
|
|
20
|
+
/**
|
|
21
|
+
* Parse relative date range expressions like "today", "yesterday", "last 7 days", "this month", etc.
|
|
22
|
+
* Handles all 14 DATE_RANGE_OPTIONS from the client
|
|
23
|
+
*/
|
|
24
|
+
parseRelativeDateRange(dateRange: string): {
|
|
25
|
+
start: Date;
|
|
26
|
+
end: Date;
|
|
27
|
+
} | null;
|
|
28
|
+
/**
|
|
29
|
+
* Normalize date values to handle strings, numbers, and Date objects
|
|
30
|
+
* Returns ISO string for PostgreSQL/MySQL, Unix timestamp for SQLite, or null
|
|
31
|
+
* Ensures dates are in the correct format for each database engine
|
|
32
|
+
*/
|
|
33
|
+
normalizeDate(value: any): string | number | null;
|
|
34
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DatabaseAdapter } from '../adapters/base-adapter';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a millisecond epoch to the engine's wire format:
|
|
4
|
+
* - SQLite: Unix seconds (integer)
|
|
5
|
+
* - other integer-timestamp engines: Unix milliseconds (integer)
|
|
6
|
+
* - PostgreSQL/MySQL: ISO string
|
|
7
|
+
*/
|
|
8
|
+
export declare function epochMsToEngineValue(databaseAdapter: DatabaseAdapter, timeMs: number): string | number;
|
|
9
|
+
/**
|
|
10
|
+
* Convert a Date to the engine's wire format (see epochMsToEngineValue).
|
|
11
|
+
*/
|
|
12
|
+
export declare function dateToEngineValue(databaseAdapter: DatabaseAdapter, date: Date): string | number;
|
|
13
|
+
/**
|
|
14
|
+
* Reconstruct a Date from a normalized value (the output of normalizeDate):
|
|
15
|
+
* a SQLite Unix-seconds integer, a millisecond integer, or an ISO string.
|
|
16
|
+
*/
|
|
17
|
+
export declare function engineValueToDate(databaseAdapter: DatabaseAdapter, value: string | number): Date;
|
|
18
|
+
/** Detect a date-only string (YYYY-MM-DD). */
|
|
19
|
+
export declare function isDateOnlyString(value: unknown): value is string;
|
|
20
|
+
/**
|
|
21
|
+
* Normalize a date value to the engine's wire format, or null when falsy or
|
|
22
|
+
* unparseable.
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizeDateValue(databaseAdapter: DatabaseAdapter, value: any): string | number | null;
|
|
25
|
+
type DateRange = {
|
|
26
|
+
start: Date;
|
|
27
|
+
end: Date;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Parse relative date range expressions like "today", "yesterday",
|
|
31
|
+
* "last 7 days", "this month", etc. Handles all 14 DATE_RANGE_OPTIONS.
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseRelativeDateRangeValue(dateRange: string): DateRange | null;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SQL, AnyColumn } from 'drizzle-orm';
|
|
2
|
+
import { FilterOperator, Filter, Cube, QueryContext } from '../types';
|
|
3
|
+
import { DatabaseAdapter } from '../adapters/base-adapter';
|
|
4
|
+
import { DateTimeBuilder } from './date-time-builder';
|
|
5
|
+
export declare class FilterBuilder {
|
|
6
|
+
private databaseAdapter;
|
|
7
|
+
private dateTimeBuilder;
|
|
8
|
+
constructor(databaseAdapter: DatabaseAdapter, dateTimeBuilder: DateTimeBuilder);
|
|
9
|
+
/**
|
|
10
|
+
* Build filter condition using Drizzle operators
|
|
11
|
+
*/
|
|
12
|
+
buildFilterCondition(fieldExpr: AnyColumn | SQL, operator: FilterOperator, values: any[], field?: any, dateRange?: string | string[]): SQL | null;
|
|
13
|
+
/**
|
|
14
|
+
* Build a logical filter (AND/OR) - used by executor for cache preloading
|
|
15
|
+
* This handles nested filter structures and builds combined SQL
|
|
16
|
+
*/
|
|
17
|
+
buildLogicalFilter(filter: Filter, cubes: Map<string, Cube>, context: QueryContext): SQL | null;
|
|
18
|
+
/** Build + AND/OR-combine a list of sub-filters, collapsing the 0- and 1-element cases. */
|
|
19
|
+
private combineFilters;
|
|
20
|
+
/**
|
|
21
|
+
* Build SQL for a single filter condition (simple or logical)
|
|
22
|
+
* Used for cache preloading to build filters independently of query context
|
|
23
|
+
*/
|
|
24
|
+
buildSingleFilter(filter: Filter, cubes: Map<string, Cube>, context: QueryContext): SQL | null;
|
|
25
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SQL, AnyColumn } from 'drizzle-orm';
|
|
2
|
+
import { FilterOperator } from '../types';
|
|
3
|
+
import { DatabaseAdapter } from '../adapters/base-adapter';
|
|
4
|
+
import { DateTimeBuilder } from './date-time-builder';
|
|
5
|
+
/**
|
|
6
|
+
* Context passed to every operator handler. Carries the resolved field
|
|
7
|
+
* expression, the (already filtered/converted) value list, plus the
|
|
8
|
+
* collaborators a handler may need.
|
|
9
|
+
*/
|
|
10
|
+
export interface FilterOperatorContext {
|
|
11
|
+
fieldExpr: AnyColumn | SQL;
|
|
12
|
+
values: any[];
|
|
13
|
+
filteredValues: any[];
|
|
14
|
+
value: any;
|
|
15
|
+
field?: any;
|
|
16
|
+
databaseAdapter: DatabaseAdapter;
|
|
17
|
+
dateTimeBuilder: DateTimeBuilder;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Dispatch a single filter operator to its handler. Returns null for any
|
|
21
|
+
* unknown operator (matching the original `default` case).
|
|
22
|
+
*/
|
|
23
|
+
export declare function applyFilterOperator(operator: FilterOperator, ctx: FilterOperatorContext): SQL | null;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { DatabaseAdapter } from '../adapters/base-adapter';
|
|
2
|
+
import { FlowQueryConfig, FlowResultRow } from '../types/flow';
|
|
3
|
+
import { AnalysisConfigValidationResult } from '../types/validation';
|
|
4
|
+
import { Cube, QueryContext, SemanticQuery } from '../types';
|
|
5
|
+
export declare class FlowQueryBuilder {
|
|
6
|
+
private filterBuilder;
|
|
7
|
+
private dateTimeBuilder;
|
|
8
|
+
private databaseAdapter;
|
|
9
|
+
constructor(databaseAdapter: DatabaseAdapter);
|
|
10
|
+
/**
|
|
11
|
+
* Check if query contains flow configuration
|
|
12
|
+
*/
|
|
13
|
+
hasFlow(query: SemanticQuery): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Validate flow configuration
|
|
16
|
+
*/
|
|
17
|
+
validateConfig(config: FlowQueryConfig, cubes: Map<string, Cube>): AnalysisConfigValidationResult;
|
|
18
|
+
/**
|
|
19
|
+
* Validate a `Cube.dimension` member string: format, cube existence, and
|
|
20
|
+
* dimension existence. i18n message factories let each call site supply its
|
|
21
|
+
* own keys while sharing the branch structure.
|
|
22
|
+
*/
|
|
23
|
+
private validateMemberDimension;
|
|
24
|
+
/** Validate the flow binding key (single member or per-cube mappings). */
|
|
25
|
+
private validateBindingKey;
|
|
26
|
+
/** Validate the flow starting step (required + filter + name warning). */
|
|
27
|
+
private validateStartingStep;
|
|
28
|
+
/** Validate flow step-depth bounds and emit high-depth performance warnings. */
|
|
29
|
+
private validateDepthBounds;
|
|
30
|
+
/** Validate the flow join strategy and its engine support. */
|
|
31
|
+
private validateJoinStrategy;
|
|
32
|
+
/**
|
|
33
|
+
* Build complete flow query using Drizzle's query builder pattern
|
|
34
|
+
*
|
|
35
|
+
* Creates a series of CTEs to:
|
|
36
|
+
* 1. Find entities at the starting step
|
|
37
|
+
* 2. Walk backwards N steps to find preceding events
|
|
38
|
+
* 3. Walk forwards N steps to find following events
|
|
39
|
+
* 4. Aggregate into nodes and links for Sankey visualization
|
|
40
|
+
*/
|
|
41
|
+
buildFlowQuery(config: FlowQueryConfig, cubes: Map<string, Cube>, context: QueryContext): ReturnType<typeof context.db.select>;
|
|
42
|
+
/**
|
|
43
|
+
* Transform raw SQL result to FlowResultRow
|
|
44
|
+
* The raw result contains rows with record_type = 'node' or 'link'
|
|
45
|
+
*/
|
|
46
|
+
transformResult(rawResult: Record<string, unknown>[]): FlowResultRow;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve flow configuration to SQL expressions
|
|
49
|
+
*/
|
|
50
|
+
private resolveFlowConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the cube for flow analysis
|
|
53
|
+
*/
|
|
54
|
+
private resolveCube;
|
|
55
|
+
/**
|
|
56
|
+
* Resolve binding key expression
|
|
57
|
+
*/
|
|
58
|
+
private resolveBindingKey;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve time dimension expression
|
|
61
|
+
*/
|
|
62
|
+
private resolveTimeDimension;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve event dimension expression
|
|
65
|
+
*/
|
|
66
|
+
private resolveEventDimension;
|
|
67
|
+
/**
|
|
68
|
+
* Build filter conditions for the starting step
|
|
69
|
+
*/
|
|
70
|
+
private buildStartingStepFilters;
|
|
71
|
+
/**
|
|
72
|
+
* Build a single filter condition
|
|
73
|
+
*/
|
|
74
|
+
private buildFilterCondition;
|
|
75
|
+
/** Build the non-null sub-conditions of a logical/group filter. */
|
|
76
|
+
private buildSubConditions;
|
|
77
|
+
/** Combine sub-conditions with AND/OR, collapsing the 0- and 1-element cases. */
|
|
78
|
+
private combineConditions;
|
|
79
|
+
/**
|
|
80
|
+
* Build the starting entities CTE
|
|
81
|
+
* Finds all entities matching the starting step filter with their start time and event type
|
|
82
|
+
* For sunburst mode, also initializes event_path with the starting event type
|
|
83
|
+
*/
|
|
84
|
+
private buildStartingEntitiesCTE;
|
|
85
|
+
/**
|
|
86
|
+
* Build CTEs for steps BEFORE/AFTER the starting point using LATERAL joins
|
|
87
|
+
*
|
|
88
|
+
* Direction-parameterised: 'before' walks backwards (time `<` reference,
|
|
89
|
+
* ORDER BY DESC, `before_step_N` aliases, bounded by `stepsBefore`); 'after'
|
|
90
|
+
* walks forwards (time `>`, ORDER BY ASC, `after_step_N`, `stepsAfter`).
|
|
91
|
+
* Uses ORDER BY ... LIMIT 1 to fetch the immediate predecessor/successor via index.
|
|
92
|
+
*/
|
|
93
|
+
private buildDirectionalCTEsLateral;
|
|
94
|
+
/**
|
|
95
|
+
* Build CTEs for steps BEFORE/AFTER the starting point using ROW_NUMBER()
|
|
96
|
+
*
|
|
97
|
+
* Direction-parameterised: 'before' finds the immediate predecessor (time `<`
|
|
98
|
+
* reference, ROW_NUMBER ORDER BY DESC, `before_step_N` aliases, bounded by
|
|
99
|
+
* `stepsBefore`); 'after' finds the immediate successor (time `>`, ORDER BY ASC,
|
|
100
|
+
* `after_step_N`, `stepsAfter`). For sunburst mode, accumulates event_path
|
|
101
|
+
* (prepend for before, append for after).
|
|
102
|
+
*/
|
|
103
|
+
private buildDirectionalCTEsWindow;
|
|
104
|
+
/**
|
|
105
|
+
* Build a single node-aggregation UNION arm for a before/after step.
|
|
106
|
+
*
|
|
107
|
+
* Sankey groups by `event_type` (converging paths); sunburst groups by
|
|
108
|
+
* `event_path` (unique tree branches). The node-id prefix and layer are
|
|
109
|
+
* emitted via sql.raw() because they're hardcoded constants (not user input)
|
|
110
|
+
* and avoid multi-digit parameter issues in DuckDB.
|
|
111
|
+
*/
|
|
112
|
+
private buildNodeArm;
|
|
113
|
+
/**
|
|
114
|
+
* Build a single link-aggregation UNION arm between two adjacent step CTEs
|
|
115
|
+
* (before→before or after→after). Sankey keys transitions on `event_type`,
|
|
116
|
+
* sunburst on `event_path`. Source/target id prefixes are sql.raw() constants.
|
|
117
|
+
*/
|
|
118
|
+
private buildAdjacentLinkArm;
|
|
119
|
+
/**
|
|
120
|
+
* Build the nodes aggregation CTE
|
|
121
|
+
* Aggregates counts per (layer, event_type) combination using UNION ALL
|
|
122
|
+
* For sunburst mode, aggregates by event_path for unique tree branches
|
|
123
|
+
*/
|
|
124
|
+
private buildNodesAggregationCTE;
|
|
125
|
+
/**
|
|
126
|
+
* Build the links aggregation CTE
|
|
127
|
+
* Counts transitions between adjacent layers
|
|
128
|
+
* For sunburst mode, uses event_path for unique branch identification
|
|
129
|
+
*/
|
|
130
|
+
private buildLinksAggregationCTE;
|
|
131
|
+
/**
|
|
132
|
+
* Build the final result CTE
|
|
133
|
+
* Combines nodes and links into a single result set with record_type discriminator
|
|
134
|
+
*/
|
|
135
|
+
private buildFinalResultCTE;
|
|
136
|
+
}
|