drizzle-cube 0.5.6 → 0.5.8
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/dist/{server/dist-DxegvyZF.cjs → adapters/dist-BOdf-GQO.cjs} +1 -1
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +4 -4
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.js +4 -4
- package/dist/{server/google-BXwMolCu.js → adapters/google-CFYljAOF.js} +1 -1
- package/dist/adapters/{google-Dgo9-Kb5.cjs → google-DUlXeeDA.cjs} +1 -1
- package/dist/adapters/{handler-Odsi9_Rd.js → handler-Cx8QYLk6.js} +20 -6
- package/dist/adapters/{handler-C0nUppAK.cjs → handler-CzbCuS6_.cjs} +4 -4
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +7 -7
- package/dist/adapters/{locale-Dy3LcTwN.js → locale-BPB7flIG.js} +16 -1
- package/dist/adapters/{locale-Dv6bl_eU.cjs → locale-tIMrNcCr.cjs} +6 -6
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +2 -2
- package/dist/adapters/mcp-transport-C2QzXm6h.cjs +40 -0
- package/dist/adapters/mcp-transport-D0B3S1tB.js +579 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +4 -4
- package/dist/{server/openai-zpXlGbbF.js → adapters/openai-B5jEiqiB.js} +2139 -948
- package/dist/{server/openai-CLWSwD-D.js → adapters/openai-BZdAA7Ji.js} +1 -1
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/adapters/{openai-BjLV_Wjx.cjs → openai-D_U4V0kT.cjs} +1 -1
- package/dist/adapters/{utils-Bd5mzZfk.js → utils-D9JPLmfl.js} +24 -10
- package/dist/adapters/{utils-DklqMBHn.cjs → utils-KV37IBIv.cjs} +4 -4
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts/ChartLoader.d.ts +1 -1
- package/dist/client/charts.js +13 -13
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js +9682 -0
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CivIny9P.js → RetentionCombinedChart-BPkfcTa8.js} +4 -4
- package/dist/client/chunks/{RetentionCombinedChart-CivIny9P.js.map → RetentionCombinedChart-BPkfcTa8.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-BHCgwZmB.js → RetentionHeatmap-DGzLzr7h.js} +3 -3
- package/dist/client/chunks/{RetentionHeatmap-BHCgwZmB.js.map → RetentionHeatmap-DGzLzr7h.js.map} +1 -1
- package/dist/client/chunks/{af-ZA-BdL6DOWy.js → af-ZA-BTaChuqI.js} +1 -1
- package/dist/client/chunks/{af-ZA-BdL6DOWy.js.map → af-ZA-BTaChuqI.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-MoGvbMRe.js → analysis-builder-MuMIzoRq.js} +244 -244
- package/dist/client/chunks/{analysis-builder-MoGvbMRe.js.map → analysis-builder-MuMIzoRq.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-DmyRh2O3.js → analysis-builder-shared-CYVwSPqt.js} +289 -289
- package/dist/client/chunks/{analysis-builder-shared-DmyRh2O3.js.map → analysis-builder-shared-CYVwSPqt.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-Bdb8U_NC.js → chart-activity-grid-DmruKPab.js} +13 -8
- package/dist/client/chunks/{chart-activity-grid-Bdb8U_NC.js.map → chart-activity-grid-DmruKPab.js.map} +1 -1
- package/dist/client/chunks/{chart-area-BZEnT-tf.js → chart-area-DHCPM4Em.js} +3 -3
- package/dist/client/chunks/{chart-area-BZEnT-tf.js.map → chart-area-DHCPM4Em.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-CTmdv_v0.js → chart-bar-KddciGDv.js} +4 -4
- package/dist/client/chunks/{chart-bar-CTmdv_v0.js.map → chart-bar-KddciGDv.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-CYObdFtp.js → chart-box-plot-DYKfyOI8.js} +3 -3
- package/dist/client/chunks/{chart-box-plot-CYObdFtp.js.map → chart-box-plot-DYKfyOI8.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-CjFprySz.js → chart-bubble-CfqiB538.js} +3 -3
- package/dist/client/chunks/{chart-bubble-CjFprySz.js.map → chart-bubble-CfqiB538.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-D2HoM3B5.js → chart-candlestick-Dwc92Mrj.js} +3 -3
- package/dist/client/chunks/{chart-candlestick-D2HoM3B5.js.map → chart-candlestick-Dwc92Mrj.js.map} +1 -1
- package/dist/client/chunks/{chart-config-activity-grid-Bom99j9m.js → chart-config-activity-grid-D_UX4NHC.js} +2 -2
- package/dist/client/chunks/{chart-config-activity-grid-Bom99j9m.js.map → chart-config-activity-grid-D_UX4NHC.js.map} +1 -1
- package/dist/client/chunks/{chart-config-area-DtYTKZxS.js → chart-config-area-Bq_UsW3x.js} +2 -2
- package/dist/client/chunks/{chart-config-area-DtYTKZxS.js.map → chart-config-area-Bq_UsW3x.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bar-7v5JVY2y.js → chart-config-bar-_JEGZnAu.js} +2 -2
- package/dist/client/chunks/{chart-config-bar-7v5JVY2y.js.map → chart-config-bar-_JEGZnAu.js.map} +1 -1
- package/dist/client/chunks/{chart-config-box-plot-BHGv-wqu.js → chart-config-box-plot-DJ-dWWXA.js} +2 -2
- package/dist/client/chunks/{chart-config-box-plot-BHGv-wqu.js.map → chart-config-box-plot-DJ-dWWXA.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bubble-BkHm-mfu.js → chart-config-bubble-gIoqVyjZ.js} +2 -2
- package/dist/client/chunks/{chart-config-bubble-BkHm-mfu.js.map → chart-config-bubble-gIoqVyjZ.js.map} +1 -1
- package/dist/client/chunks/{chart-config-candlestick-D1aaHvTe.js → chart-config-candlestick-N6DchAA3.js} +2 -2
- package/dist/client/chunks/{chart-config-candlestick-D1aaHvTe.js.map → chart-config-candlestick-N6DchAA3.js.map} +1 -1
- package/dist/client/chunks/{chart-config-data-table-B_Hw8w2J.js → chart-config-data-table-d7VBY-y_.js} +2 -2
- package/dist/client/chunks/{chart-config-data-table-B_Hw8w2J.js.map → chart-config-data-table-d7VBY-y_.js.map} +1 -1
- package/dist/client/chunks/{chart-config-funnel-DL8PSGuL.js → chart-config-funnel-DEYMcxsD.js} +2 -2
- package/dist/client/chunks/{chart-config-funnel-DL8PSGuL.js.map → chart-config-funnel-DEYMcxsD.js.map} +1 -1
- package/dist/client/chunks/{chart-config-gauge-BVLxuA3f.js → chart-config-gauge-DSwC04l0.js} +2 -2
- package/dist/client/chunks/{chart-config-gauge-BVLxuA3f.js.map → chart-config-gauge-DSwC04l0.js.map} +1 -1
- package/dist/client/chunks/{chart-config-heat-map-CjudGdui.js → chart-config-heat-map-CfRnRNcw.js} +2 -2
- package/dist/client/chunks/{chart-config-heat-map-CjudGdui.js.map → chart-config-heat-map-CfRnRNcw.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-delta-Bf47hGqD.js → chart-config-kpi-delta-D6BIkHL3.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-delta-Bf47hGqD.js.map → chart-config-kpi-delta-D6BIkHL3.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-number-QTQRNgOi.js → chart-config-kpi-number-Bx-V9a62.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-number-QTQRNgOi.js.map → chart-config-kpi-number-Bx-V9a62.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-text-BRze2eyh.js → chart-config-kpi-text-CcqC1u-8.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-text-BRze2eyh.js.map → chart-config-kpi-text-CcqC1u-8.js.map} +1 -1
- package/dist/client/chunks/{chart-config-line-BFeCqmKH.js → chart-config-line-Db3jDsWc.js} +2 -2
- package/dist/client/chunks/{chart-config-line-BFeCqmKH.js.map → chart-config-line-Db3jDsWc.js.map} +1 -1
- package/dist/client/chunks/{chart-config-markdown-EWYckwXv.js → chart-config-markdown-BtRIe8JN.js} +2 -2
- package/dist/client/chunks/{chart-config-markdown-EWYckwXv.js.map → chart-config-markdown-BtRIe8JN.js.map} +1 -1
- package/dist/client/chunks/{chart-config-measure-profile-B9nIhqKR.js → chart-config-measure-profile-DxRGa-zf.js} +2 -2
- package/dist/client/chunks/{chart-config-measure-profile-B9nIhqKR.js.map → chart-config-measure-profile-DxRGa-zf.js.map} +1 -1
- package/dist/client/chunks/{chart-config-pie-6LHtEyMM.js → chart-config-pie-DD4SmRTF.js} +2 -2
- package/dist/client/chunks/{chart-config-pie-6LHtEyMM.js.map → chart-config-pie-DD4SmRTF.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radar-BuLS6Inn.js → chart-config-radar-CC2XAaGr.js} +2 -2
- package/dist/client/chunks/{chart-config-radar-BuLS6Inn.js.map → chart-config-radar-CC2XAaGr.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radial-bar-BP0eMohx.js → chart-config-radial-bar-DmxKx1R0.js} +2 -2
- package/dist/client/chunks/{chart-config-radial-bar-BP0eMohx.js.map → chart-config-radial-bar-DmxKx1R0.js.map} +1 -1
- package/dist/client/chunks/{chart-config-sankey-CT8oGIGP.js → chart-config-sankey-BTnWA7EW.js} +2 -2
- package/dist/client/chunks/{chart-config-sankey-CT8oGIGP.js.map → chart-config-sankey-BTnWA7EW.js.map} +1 -1
- package/dist/client/chunks/{chart-config-scatter-DOSpN07Z.js → chart-config-scatter-DSYTjwRb.js} +2 -2
- package/dist/client/chunks/{chart-config-scatter-DOSpN07Z.js.map → chart-config-scatter-DSYTjwRb.js.map} +1 -1
- package/dist/client/chunks/{chart-config-sunburst-BSUX_YoB.js → chart-config-sunburst-Bwjtdf7X.js} +2 -2
- package/dist/client/chunks/{chart-config-sunburst-BSUX_YoB.js.map → chart-config-sunburst-Bwjtdf7X.js.map} +1 -1
- package/dist/client/chunks/{chart-config-tree-map-D8GuAgVB.js → chart-config-tree-map-BI-oQStO.js} +2 -2
- package/dist/client/chunks/{chart-config-tree-map-D8GuAgVB.js.map → chart-config-tree-map-BI-oQStO.js.map} +1 -1
- package/dist/client/chunks/{chart-config-waterfall-BDi7BoJP.js → chart-config-waterfall-DSnyixbI.js} +2 -2
- package/dist/client/chunks/{chart-config-waterfall-BDi7BoJP.js.map → chart-config-waterfall-DSnyixbI.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-DT4uBZaq.js → chart-data-table-BO4sXsim.js} +842 -834
- package/dist/client/chunks/chart-data-table-BO4sXsim.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-B9crR3b3.js → chart-funnel-DnWRsmnS.js} +3 -3
- package/dist/client/chunks/{chart-funnel-B9crR3b3.js.map → chart-funnel-DnWRsmnS.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DAMFsicz.js → chart-gauge-CgMeqeGb.js} +3 -3
- package/dist/client/chunks/{chart-gauge-DAMFsicz.js.map → chart-gauge-CgMeqeGb.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-BxgM_X1G.js → chart-heat-map-DcGm9SWK.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-BxgM_X1G.js.map → chart-heat-map-DcGm9SWK.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-DJKL02Ut.js → chart-kpi-delta-C2wKPqCb.js} +6 -6
- package/dist/client/chunks/{chart-kpi-delta-DJKL02Ut.js.map → chart-kpi-delta-C2wKPqCb.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-CuNEYbRx.js → chart-kpi-number-gWYF44ol.js} +8 -8
- package/dist/client/chunks/{chart-kpi-number-CuNEYbRx.js.map → chart-kpi-number-gWYF44ol.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-u8FJaZDQ.js → chart-kpi-text-DIYtJtk4.js} +4 -4
- package/dist/client/chunks/{chart-kpi-text-u8FJaZDQ.js.map → chart-kpi-text-DIYtJtk4.js.map} +1 -1
- package/dist/client/chunks/{chart-line-BZhzOjRl.js → chart-line-9BEGN5Ti.js} +4 -4
- package/dist/client/chunks/{chart-line-BZhzOjRl.js.map → chart-line-9BEGN5Ti.js.map} +1 -1
- package/dist/client/chunks/chart-markdown-dgUetjyM.js +3654 -0
- package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BnpIOS4Q.js → chart-measure-profile-ClfpLs4q.js} +4 -4
- package/dist/client/chunks/{chart-measure-profile-BnpIOS4Q.js.map → chart-measure-profile-ClfpLs4q.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-CsdzxmSK.js → chart-pie-BjAIhyOi.js} +4 -4
- package/dist/client/chunks/{chart-pie-CsdzxmSK.js.map → chart-pie-BjAIhyOi.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-C_9RwMKw.js → chart-radar-Dgkcl2bN.js} +4 -4
- package/dist/client/chunks/{chart-radar-C_9RwMKw.js.map → chart-radar-Dgkcl2bN.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-CewRelyQ.js → chart-radial-bar-DdWJjAhK.js} +4 -4
- package/dist/client/chunks/{chart-radial-bar-CewRelyQ.js.map → chart-radial-bar-DdWJjAhK.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-ItraHWH1.js → chart-sankey-M3XpO_ah.js} +3 -3
- package/dist/client/chunks/{chart-sankey-ItraHWH1.js.map → chart-sankey-M3XpO_ah.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-k2IJbO2Y.js → chart-scatter-DaHYP_OL.js} +4 -4
- package/dist/client/chunks/{chart-scatter-k2IJbO2Y.js.map → chart-scatter-DaHYP_OL.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-NsFRuqi9.js → chart-sunburst-A_u6lqlS.js} +4 -4
- package/dist/client/chunks/{chart-sunburst-NsFRuqi9.js.map → chart-sunburst-A_u6lqlS.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-Cj_ewpwJ.js → chart-tree-map-uiwUU4nb.js} +4 -4
- package/dist/client/chunks/{chart-tree-map-Cj_ewpwJ.js.map → chart-tree-map-uiwUU4nb.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-C-MTFcOz.js → chart-waterfall-BuhMoagf.js} +4 -4
- package/dist/client/chunks/{chart-waterfall-C-MTFcOz.js.map → chart-waterfall-BuhMoagf.js.map} +1 -1
- package/dist/client/chunks/{charts-core-vZA3zPKb.js → charts-core-jRtb0S2M.js} +2 -2
- package/dist/client/chunks/{charts-core-vZA3zPKb.js.map → charts-core-jRtb0S2M.js.map} +1 -1
- package/dist/client/chunks/{core-Su6tIYhp.js → core-D7vPfUIe.js} +84 -84
- package/dist/client/chunks/{core-Su6tIYhp.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{dist-BTq3NoG3.js → dist-zPWyTBdU.js} +1 -1
- package/dist/client/chunks/{dist-BTq3NoG3.js.map → dist-zPWyTBdU.js.map} +1 -1
- package/dist/client/chunks/{en-US-D-1JPTPv.js → en-US-BE6VoG0o.js} +1 -1
- package/dist/client/chunks/{en-US-D-1JPTPv.js.map → en-US-BE6VoG0o.js.map} +1 -1
- package/dist/client/chunks/{exceljs.min-Dc1cBQ5l.js → exceljs.min-CIqBqwTW.js} +2 -2
- package/dist/client/chunks/{exceljs.min-Dc1cBQ5l.js.map → exceljs.min-CIqBqwTW.js.map} +1 -1
- package/dist/client/chunks/{javascript-YXkoOgWa.js → javascript-DFnKaHmQ.js} +3 -3
- package/dist/client/chunks/{javascript-YXkoOgWa.js.map → javascript-DFnKaHmQ.js.map} +1 -1
- package/dist/client/chunks/{json-O7MKB_4V.js → json-Cu6rbgWf.js} +1 -1
- package/dist/client/chunks/{json-O7MKB_4V.js.map → json-Cu6rbgWf.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-BErZMygi.js → nl-NL-CpVs7ox3.js} +7 -2
- package/dist/client/chunks/{nl-NL-BErZMygi.js.map → nl-NL-CpVs7ox3.js.map} +1 -1
- package/dist/client/chunks/{providers-DX3Vw5kc.js → providers-DwQCKdGW.js} +1 -1
- package/dist/client/chunks/{providers-DX3Vw5kc.js.map → providers-DwQCKdGW.js.map} +1 -1
- package/dist/client/chunks/{retention-YhT1Oohi.js → retention-ChW9jYdy.js} +1 -1
- package/dist/client/chunks/{retention-YhT1Oohi.js.map → retention-ChW9jYdy.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-BY9L2nBQ.js → schema-visualization-DE09kQE3.js} +5 -5
- package/dist/client/chunks/{schema-visualization-BY9L2nBQ.js.map → schema-visualization-DE09kQE3.js.map} +1 -1
- package/dist/client/chunks/{sql-r2a-9CCK.js → sql-CmVzGP4w.js} +1 -1
- package/dist/client/chunks/{sql-r2a-9CCK.js.map → sql-CmVzGP4w.js.map} +1 -1
- package/dist/client/chunks/{useDebounce-DGfYXtkm.js → useDirtyStateTracking-CoeQbprt.js} +99 -37
- package/dist/client/chunks/useDirtyStateTracking-CoeQbprt.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CD0KuKwY.js → useExplainAI-DlnXWdmz.js} +19 -19
- package/dist/client/chunks/{useExplainAI-CD0KuKwY.js.map → useExplainAI-DlnXWdmz.js.map} +1 -1
- package/dist/client/chunks/{useNotebookLayout-DKkMenhj.js → useNotebookLayout-Ck3Z3uzg.js} +2 -2
- package/dist/client/chunks/{useNotebookLayout-DKkMenhj.js.map → useNotebookLayout-Ck3Z3uzg.js.map} +1 -1
- package/dist/client/chunks/{utils-D2SCtAkZ.js → utils-CTKNaXS8.js} +40 -13
- package/dist/client/chunks/utils-CTKNaXS8.js.map +1 -0
- package/dist/client/chunks/{vendor-CfR5hJGc.js → vendor-CPIYyeuD.js} +102 -97
- package/dist/client/chunks/vendor-CPIYyeuD.js.map +1 -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/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/FilterConfigModal.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- 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/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- package/dist/client/components/DashboardGrid.d.ts +3 -1
- 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/charts/AxisFormatControls.d.ts +2 -2
- 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/ChartTooltip.d.ts +1 -1
- package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardContext.d.ts +113 -0
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +2 -0
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +8 -0
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +8 -0
- package/dist/client/components/dashboard/DashboardModals.d.ts +8 -0
- package/dist/client/components/dashboard/DashboardProvider.d.ts +2 -0
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +11 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +17 -0
- package/dist/client/components/dashboard/index.d.ts +13 -0
- package/dist/client/components.d.ts +2 -0
- package/dist/client/components.js +3 -4
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +5 -6
- package/dist/client/icons.d.ts +1 -1
- package/dist/client/icons.js +2 -2
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +161 -163
- 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/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/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/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.js +6 -7
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +78 -52
- package/dist/{adapters/dist-Boc63-1q.cjs → server/dist-BOdf-GQO.cjs} +1 -1
- package/dist/{adapters/google-CT4kgmBf.js → server/google-CFYljAOF.js} +1 -1
- package/dist/server/{google-DzQWXFwF.cjs → google-DUlXeeDA.cjs} +1 -1
- package/dist/server/index.cjs +11 -11
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +58 -15
- package/dist/{adapters/openai-CuUGrKaK.js → server/openai-B5jEiqiB.js} +2139 -948
- package/dist/{adapters/openai-DQawCWQb.js → server/openai-BZdAA7Ji.js} +1 -1
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/server/{openai-BfiZU0rG.cjs → openai-D_U4V0kT.cjs} +1 -1
- package/dist/server/server/adapters/base-adapter.d.ts +287 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +114 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +122 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +122 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +119 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +116 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +140 -0
- package/dist/server/server/agent/chart-validation.d.ts +27 -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.d.ts +62 -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.d.ts +19 -0
- package/dist/server/server/ai/validation.d.ts +34 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +62 -0
- package/dist/server/server/builders/date-time-builder.d.ts +29 -0
- package/dist/server/server/builders/filter-builder.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +109 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +134 -0
- package/dist/server/server/builders/group-by-builder.d.ts +27 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +142 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +100 -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 +65 -0
- package/dist/server/server/compiler.d.ts +218 -0
- package/dist/server/server/cube-utils.d.ts +133 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- package/dist/server/server/executor.d.ts +183 -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/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/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 +42 -0
- package/dist/server/server/index.d.ts +36 -0
- package/dist/server/server/logical-plan/index.d.ts +14 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +232 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +32 -0
- package/dist/server/server/logical-plan/types.d.ts +191 -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 +107 -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 +6 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -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 +33 -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/resolvers/calculated-measure-resolver.d.ts +93 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +152 -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 +530 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +143 -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/package.json +6 -6
- package/dist/adapters/mcp-transport-BCtjU0lC.cjs +0 -40
- package/dist/adapters/mcp-transport-DW_Uks-O.js +0 -579
- package/dist/adapters/openai-Bgri5TJc.cjs +0 -16
- package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js +0 -6696
- package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js.map +0 -1
- package/dist/client/chunks/FieldSearchModal-DdcbCwAi.js +0 -2660
- package/dist/client/chunks/FieldSearchModal-DdcbCwAi.js.map +0 -1
- package/dist/client/chunks/chart-data-table-DT4uBZaq.js.map +0 -1
- package/dist/client/chunks/chart-markdown-DEtjn8gx.js +0 -3539
- package/dist/client/chunks/chart-markdown-DEtjn8gx.js.map +0 -1
- package/dist/client/chunks/syntaxHighlighting-5zHcjn27.js +0 -30
- package/dist/client/chunks/syntaxHighlighting-5zHcjn27.js.map +0 -1
- package/dist/client/chunks/useDebounce-DGfYXtkm.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-KAjwj1Ht.js +0 -66
- package/dist/client/chunks/useDirtyStateTracking-KAjwj1Ht.js.map +0 -1
- package/dist/client/chunks/utils-D2SCtAkZ.js.map +0 -1
- package/dist/client/chunks/vendor-CfR5hJGc.js.map +0 -1
- package/dist/server/openai-BwsBio1K.cjs +0 -16
- /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
- /package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +0 -0
- /package/dist/adapters/{anthropic-B_rg0BhK.js → anthropic-CZh4hB-m.js} +0 -0
- /package/dist/adapters/{anthropic-BIva8k1r.cjs → anthropic-DG4r1LSm.cjs} +0 -0
- /package/dist/adapters/{dist-De5fzUEM.js → dist-CH3hwAUk.js} +0 -0
- /package/dist/client/chunks/{rolldown-runtime-CKnJJeip.js → rolldown-runtime-CWhphoD1.js} +0 -0
- /package/dist/server/{anthropic-BsNspi1r.js → anthropic-CZh4hB-m.js} +0 -0
- /package/dist/server/{anthropic-DsCEX6Fm.cjs → anthropic-DG4r1LSm.cjs} +0 -0
- /package/dist/server/{dist-CMWZC51B.js → dist-CH3hwAUk.js} +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Filter } from './query';
|
|
2
|
+
/**
|
|
3
|
+
* Flow query configuration for server-side execution
|
|
4
|
+
* This is the configuration extracted from SemanticQuery.flow
|
|
5
|
+
*/
|
|
6
|
+
export interface FlowQueryConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Binding key that identifies individual entities (e.g., userId)
|
|
9
|
+
* Can be a single string like 'Events.userId' or array for multi-cube
|
|
10
|
+
*/
|
|
11
|
+
bindingKey: string | {
|
|
12
|
+
cube: string;
|
|
13
|
+
dimension: string;
|
|
14
|
+
}[];
|
|
15
|
+
/**
|
|
16
|
+
* Time dimension used for ordering events
|
|
17
|
+
* Can be a single string like 'Events.timestamp' or array for multi-cube
|
|
18
|
+
*/
|
|
19
|
+
timeDimension: string | {
|
|
20
|
+
cube: string;
|
|
21
|
+
dimension: string;
|
|
22
|
+
}[];
|
|
23
|
+
/**
|
|
24
|
+
* The starting step from which we explore paths
|
|
25
|
+
* Defines the anchor point for bidirectional flow analysis
|
|
26
|
+
*/
|
|
27
|
+
startingStep: {
|
|
28
|
+
/** Display name for the starting step */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Filter(s) that identify events for this starting step */
|
|
31
|
+
filter?: Filter | Filter[];
|
|
32
|
+
};
|
|
33
|
+
/** Number of steps to explore BEFORE the starting step (0-5) */
|
|
34
|
+
stepsBefore: number;
|
|
35
|
+
/** Number of steps to explore AFTER the starting step (0-5) */
|
|
36
|
+
stepsAfter: number;
|
|
37
|
+
/**
|
|
38
|
+
* Event dimension that categorizes events (e.g., 'Events.eventType')
|
|
39
|
+
* This dimension's values become the node labels in the Sankey diagram
|
|
40
|
+
*/
|
|
41
|
+
eventDimension: string;
|
|
42
|
+
/**
|
|
43
|
+
* Optional limit on the number of entities to process
|
|
44
|
+
* Useful for performance on large datasets
|
|
45
|
+
*/
|
|
46
|
+
entityLimit?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Output mode for flow data aggregation
|
|
49
|
+
* - 'sankey': Aggregate by (layer, event_type) - standard flow visualization where paths can converge
|
|
50
|
+
* - 'sunburst': Path-qualified nodes for hierarchical tree visualization where each path is unique
|
|
51
|
+
* @default 'sankey'
|
|
52
|
+
*/
|
|
53
|
+
outputMode?: 'sankey' | 'sunburst';
|
|
54
|
+
/**
|
|
55
|
+
* Join strategy for fetching before/after steps
|
|
56
|
+
* - 'auto' (default): Use lateral when supported, otherwise window
|
|
57
|
+
* - 'lateral': Force lateral joins (error if not supported)
|
|
58
|
+
* - 'window': Force window-function strategy
|
|
59
|
+
*/
|
|
60
|
+
joinStrategy?: 'auto' | 'lateral' | 'window';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A node in the Sankey diagram
|
|
64
|
+
* Represents an event type at a specific layer (distance from starting step)
|
|
65
|
+
*/
|
|
66
|
+
export interface SankeyNode {
|
|
67
|
+
/**
|
|
68
|
+
* Unique identifier for this node
|
|
69
|
+
* Format: "before_{depth}_{eventType}" or "after_{depth}_{eventType}" or "start_{eventType}"
|
|
70
|
+
*/
|
|
71
|
+
id: string;
|
|
72
|
+
/** Display name (typically the event type value) */
|
|
73
|
+
name: string;
|
|
74
|
+
/**
|
|
75
|
+
* Layer position in the Sankey diagram
|
|
76
|
+
* Negative for steps before starting step, 0 for starting step, positive for after
|
|
77
|
+
*/
|
|
78
|
+
layer: number;
|
|
79
|
+
/** Total count of entities passing through this node */
|
|
80
|
+
value?: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A link (edge) in the Sankey diagram
|
|
84
|
+
* Represents a transition between two nodes
|
|
85
|
+
*/
|
|
86
|
+
export interface SankeyLink {
|
|
87
|
+
/** Source node ID */
|
|
88
|
+
source: string;
|
|
89
|
+
/** Target node ID */
|
|
90
|
+
target: string;
|
|
91
|
+
/** Count of entities that follow this path */
|
|
92
|
+
value: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Flow result row returned from query execution
|
|
96
|
+
* Contains the complete Sankey diagram data
|
|
97
|
+
*/
|
|
98
|
+
export interface FlowResultRow {
|
|
99
|
+
nodes: SankeyNode[];
|
|
100
|
+
links: SankeyLink[];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Internal representation of a resolved step during query building
|
|
104
|
+
*/
|
|
105
|
+
export interface ResolvedFlowStep {
|
|
106
|
+
/** Layer index (-N to +N, 0 is starting step) */
|
|
107
|
+
layer: number;
|
|
108
|
+
/** Direction from starting step */
|
|
109
|
+
direction: 'before' | 'start' | 'after';
|
|
110
|
+
/** Depth from starting step (0 for start, 1+ for before/after) */
|
|
111
|
+
depth: number;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Raw aggregation row from the flow CTEs
|
|
115
|
+
* Before transformation to SankeyNode/SankeyLink format
|
|
116
|
+
*/
|
|
117
|
+
export interface RawFlowNodeRow {
|
|
118
|
+
node_id: string;
|
|
119
|
+
event_type: string;
|
|
120
|
+
layer: number;
|
|
121
|
+
count: number;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Raw link row from the flow CTEs
|
|
125
|
+
* Before transformation to SankeyLink format
|
|
126
|
+
*/
|
|
127
|
+
export interface RawFlowLinkRow {
|
|
128
|
+
source_id: string;
|
|
129
|
+
target_id: string;
|
|
130
|
+
count: number;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Flow validation result
|
|
134
|
+
*/
|
|
135
|
+
export interface FlowValidationResult {
|
|
136
|
+
isValid: boolean;
|
|
137
|
+
errors: string[];
|
|
138
|
+
warnings: string[];
|
|
139
|
+
}
|
|
140
|
+
/** Minimum number of steps before/after */
|
|
141
|
+
export declare const FLOW_MIN_DEPTH = 0;
|
|
142
|
+
/** Maximum number of steps before/after */
|
|
143
|
+
export declare const FLOW_MAX_DEPTH = 5;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Filter } from './query';
|
|
2
|
+
/**
|
|
3
|
+
* Single-cube step definition - all steps use the same cube
|
|
4
|
+
*/
|
|
5
|
+
export interface FunnelStepSingleCube {
|
|
6
|
+
/** Step display name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Filter conditions for this step */
|
|
9
|
+
filter?: Filter | Filter[];
|
|
10
|
+
/**
|
|
11
|
+
* Time window constraint - max duration from previous step.
|
|
12
|
+
* Format: ISO 8601 duration (e.g., "P7D" for 7 days, "PT1H" for 1 hour)
|
|
13
|
+
*/
|
|
14
|
+
timeToConvert?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Multi-cube step definition - steps can use different cubes
|
|
18
|
+
*/
|
|
19
|
+
export interface FunnelStepMultiCube extends FunnelStepSingleCube {
|
|
20
|
+
/** Which cube this step uses */
|
|
21
|
+
cube: string;
|
|
22
|
+
}
|
|
23
|
+
export type FunnelStep = FunnelStepSingleCube | FunnelStepMultiCube;
|
|
24
|
+
/**
|
|
25
|
+
* Binding key mapping for multi-cube funnels
|
|
26
|
+
* Maps the user/entity identifier across different cubes
|
|
27
|
+
*/
|
|
28
|
+
export interface FunnelBindingKeyMapping {
|
|
29
|
+
cube: string;
|
|
30
|
+
dimension: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Time dimension mapping for multi-cube funnels
|
|
34
|
+
* Maps the timestamp field across different cubes
|
|
35
|
+
*/
|
|
36
|
+
export interface FunnelTimeDimensionMapping {
|
|
37
|
+
cube: string;
|
|
38
|
+
dimension: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Funnel query configuration
|
|
42
|
+
*/
|
|
43
|
+
export interface FunnelQueryConfig {
|
|
44
|
+
/**
|
|
45
|
+
* Binding key - dimension that links entities across steps.
|
|
46
|
+
* This is typically a user ID, session ID, or other entity identifier.
|
|
47
|
+
* String for single-cube (e.g., 'Events.userId'),
|
|
48
|
+
* Array for multi-cube with different column names per cube.
|
|
49
|
+
*/
|
|
50
|
+
bindingKey: string | FunnelBindingKeyMapping[];
|
|
51
|
+
/**
|
|
52
|
+
* Time dimension for temporal ordering.
|
|
53
|
+
* Used to determine event order and calculate time-to-convert.
|
|
54
|
+
* String for single-cube (e.g., 'Events.timestamp'),
|
|
55
|
+
* Array for multi-cube with different timestamp columns per cube.
|
|
56
|
+
*/
|
|
57
|
+
timeDimension: string | FunnelTimeDimensionMapping[];
|
|
58
|
+
/** Ordered array of funnel steps (minimum 2) */
|
|
59
|
+
steps: FunnelStep[];
|
|
60
|
+
/** Include time-to-convert metrics in results (default: false) */
|
|
61
|
+
includeTimeMetrics?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Global time window - all steps must complete within this duration
|
|
64
|
+
* from the first step. Format: ISO 8601 duration.
|
|
65
|
+
*/
|
|
66
|
+
globalTimeWindow?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Result row for funnel query
|
|
70
|
+
*/
|
|
71
|
+
export interface FunnelResultRow {
|
|
72
|
+
/** Step name */
|
|
73
|
+
step: string;
|
|
74
|
+
/** Step position (0-indexed) */
|
|
75
|
+
stepIndex: number;
|
|
76
|
+
/** Count of entities that reached this step */
|
|
77
|
+
count: number;
|
|
78
|
+
/**
|
|
79
|
+
* Step-to-step conversion rate (count / previous step count).
|
|
80
|
+
* null for first step.
|
|
81
|
+
*/
|
|
82
|
+
conversionRate: number | null;
|
|
83
|
+
/**
|
|
84
|
+
* Cumulative conversion rate from first step (count / first step count).
|
|
85
|
+
*/
|
|
86
|
+
cumulativeConversionRate: number;
|
|
87
|
+
/** Average time to reach this step from previous step (seconds) */
|
|
88
|
+
avgSecondsToConvert?: number | null;
|
|
89
|
+
/** Median time to reach this step from previous step (seconds) */
|
|
90
|
+
medianSecondsToConvert?: number | null;
|
|
91
|
+
/** 90th percentile time to reach this step (seconds) */
|
|
92
|
+
p90SecondsToConvert?: number | null;
|
|
93
|
+
/** Minimum time to reach this step (seconds) */
|
|
94
|
+
minSecondsToConvert?: number | null;
|
|
95
|
+
/** Maximum time to reach this step (seconds) */
|
|
96
|
+
maxSecondsToConvert?: number | null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Funnel capabilities per database engine
|
|
100
|
+
*/
|
|
101
|
+
export interface FunnelCapabilities {
|
|
102
|
+
/** Whether database supports PERCENTILE_CONT */
|
|
103
|
+
supportsPercentile: boolean;
|
|
104
|
+
/** Whether database supports INTERVAL arithmetic directly */
|
|
105
|
+
supportsIntervalArithmetic: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Type guard for multi-cube step
|
|
109
|
+
*/
|
|
110
|
+
export declare function isMultiCubeStep(step: FunnelStep): step is FunnelStepMultiCube;
|
|
111
|
+
/**
|
|
112
|
+
* Type guard for multi-cube binding key
|
|
113
|
+
*/
|
|
114
|
+
export declare function isMultiCubeBindingKey(bindingKey: string | FunnelBindingKeyMapping[]): bindingKey is FunnelBindingKeyMapping[];
|
|
115
|
+
/**
|
|
116
|
+
* Type guard for multi-cube time dimension
|
|
117
|
+
*/
|
|
118
|
+
export declare function isMultiCubeTimeDimension(timeDimension: string | FunnelTimeDimensionMapping[]): timeDimension is FunnelTimeDimensionMapping[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './core';
|
|
2
|
+
export * from './query';
|
|
3
|
+
export * from './funnel';
|
|
4
|
+
export * from './retention';
|
|
5
|
+
export * from './cube';
|
|
6
|
+
export * from './executor';
|
|
7
|
+
export * from './metadata';
|
|
8
|
+
export * from './analysis';
|
|
9
|
+
export * from './utils';
|
|
10
|
+
export * from './cache';
|
|
11
|
+
export { defineCube } from '../cube-utils';
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { MeasureType, MeasureFormat, DimensionFormat, TimeGranularity } from './core';
|
|
2
|
+
/**
|
|
3
|
+
* Cube relationship metadata for ERD visualization
|
|
4
|
+
*/
|
|
5
|
+
export interface CubeRelationshipMetadata {
|
|
6
|
+
targetCube: string;
|
|
7
|
+
relationship: 'belongsTo' | 'hasOne' | 'hasMany' | 'belongsToMany';
|
|
8
|
+
joinFields: Array<{
|
|
9
|
+
sourceField: string;
|
|
10
|
+
targetField: string;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Cube metadata for API responses
|
|
15
|
+
*/
|
|
16
|
+
export interface CubeMetadata {
|
|
17
|
+
name: string;
|
|
18
|
+
title: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Example questions that can be answered using this cube
|
|
22
|
+
* Used by AI agents to understand cube capabilities
|
|
23
|
+
*/
|
|
24
|
+
exampleQuestions?: string[];
|
|
25
|
+
measures: MeasureMetadata[];
|
|
26
|
+
dimensions: DimensionMetadata[];
|
|
27
|
+
segments: any[];
|
|
28
|
+
relationships?: CubeRelationshipMetadata[];
|
|
29
|
+
/**
|
|
30
|
+
* Hierarchies for structured drill-down paths
|
|
31
|
+
* Enables navigation through dimension levels (e.g., country -> region -> city)
|
|
32
|
+
*/
|
|
33
|
+
hierarchies?: HierarchyMetadata[];
|
|
34
|
+
/** Additional cube metadata (e.g., eventStream configuration for funnel queries) */
|
|
35
|
+
meta?: Record<string, any>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Measure metadata for API responses
|
|
39
|
+
*/
|
|
40
|
+
export interface MeasureMetadata {
|
|
41
|
+
name: string;
|
|
42
|
+
title: string;
|
|
43
|
+
shortTitle: string;
|
|
44
|
+
type: MeasureType;
|
|
45
|
+
format?: MeasureFormat;
|
|
46
|
+
description?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Alternative names for this measure
|
|
49
|
+
* Used by AI agents for natural language matching
|
|
50
|
+
*/
|
|
51
|
+
synonyms?: string[];
|
|
52
|
+
/**
|
|
53
|
+
* Dimension names shown when drilling into this measure
|
|
54
|
+
* Full names like "CubeName.dimensionName" for cross-cube support
|
|
55
|
+
* If not specified, drilling is disabled for this measure
|
|
56
|
+
*/
|
|
57
|
+
drillMembers?: string[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Dimension metadata for API responses
|
|
61
|
+
*/
|
|
62
|
+
export interface DimensionMetadata {
|
|
63
|
+
name: string;
|
|
64
|
+
title: string;
|
|
65
|
+
shortTitle: string;
|
|
66
|
+
type: string;
|
|
67
|
+
format?: DimensionFormat;
|
|
68
|
+
description?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Alternative names for this dimension
|
|
71
|
+
* Used by AI agents for natural language matching
|
|
72
|
+
*/
|
|
73
|
+
synonyms?: string[];
|
|
74
|
+
/**
|
|
75
|
+
* Supported granularities for time dimensions
|
|
76
|
+
* Only present when type is 'time'
|
|
77
|
+
* Used for time-based drill-down (year -> quarter -> month -> week -> day)
|
|
78
|
+
*/
|
|
79
|
+
granularities?: TimeGranularity[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Hierarchy metadata for structured drill-down paths
|
|
83
|
+
*/
|
|
84
|
+
export interface HierarchyMetadata {
|
|
85
|
+
/** Unique identifier for the hierarchy */
|
|
86
|
+
name: string;
|
|
87
|
+
/** Display title for the hierarchy */
|
|
88
|
+
title: string;
|
|
89
|
+
/** Cube name this hierarchy belongs to */
|
|
90
|
+
cubeName: string;
|
|
91
|
+
/**
|
|
92
|
+
* Full dimension names in order from least to most granular
|
|
93
|
+
* Format: "CubeName.dimensionName"
|
|
94
|
+
*/
|
|
95
|
+
levels: string[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Pre-aggregation configuration
|
|
99
|
+
*/
|
|
100
|
+
export interface SemanticPreAggregation {
|
|
101
|
+
name: string;
|
|
102
|
+
measures: string[];
|
|
103
|
+
dimensions: string[];
|
|
104
|
+
timeDimension?: {
|
|
105
|
+
dimension: string;
|
|
106
|
+
granularity: TimeGranularity[];
|
|
107
|
+
};
|
|
108
|
+
refreshKey?: {
|
|
109
|
+
every: string;
|
|
110
|
+
sql?: string;
|
|
111
|
+
};
|
|
112
|
+
indexes?: Record<string, string[]>;
|
|
113
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { TimeGranularity } from './core';
|
|
2
|
+
import { FunnelQueryConfig } from './funnel';
|
|
3
|
+
import { FlowQueryConfig } from './flow';
|
|
4
|
+
import { RetentionQueryConfig } from './retention';
|
|
5
|
+
/**
|
|
6
|
+
* Semantic query structure (Cube.js compatible)
|
|
7
|
+
*/
|
|
8
|
+
export interface SemanticQuery {
|
|
9
|
+
measures?: string[];
|
|
10
|
+
dimensions?: string[];
|
|
11
|
+
filters?: Array<Filter>;
|
|
12
|
+
timeDimensions?: Array<TimeDimension>;
|
|
13
|
+
limit?: number;
|
|
14
|
+
offset?: number;
|
|
15
|
+
order?: Record<string, 'asc' | 'desc'>;
|
|
16
|
+
/**
|
|
17
|
+
* Default value to fill missing time series gaps with.
|
|
18
|
+
* Used when fillMissingDates is enabled on time dimensions.
|
|
19
|
+
* Default: 0
|
|
20
|
+
*/
|
|
21
|
+
fillMissingDatesValue?: number | null;
|
|
22
|
+
/**
|
|
23
|
+
* When true, returns raw row-level data without GROUP BY or aggregation.
|
|
24
|
+
* Measures are rendered as raw column expressions (no aggregation wrappers).
|
|
25
|
+
* Security context and joins still apply normally.
|
|
26
|
+
*
|
|
27
|
+
* Constraints:
|
|
28
|
+
* - Requires at least one dimension
|
|
29
|
+
* - Only compatible with sum, avg, min, max, and number measure types
|
|
30
|
+
* - Incompatible with count, countDistinct, calculated, and window function measures
|
|
31
|
+
* - Incompatible with measure filters, hasMany joins, funnel/flow/retention modes
|
|
32
|
+
* - Incompatible with compareDateRange and fillMissingDates
|
|
33
|
+
*/
|
|
34
|
+
ungrouped?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Funnel analysis configuration for query-time funnel definition.
|
|
37
|
+
* When specified, the query executes as a funnel analysis instead of
|
|
38
|
+
* standard measures/dimensions aggregation.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* {
|
|
43
|
+
* funnel: {
|
|
44
|
+
* bindingKey: 'Events.userId',
|
|
45
|
+
* timeDimension: 'Events.timestamp',
|
|
46
|
+
* steps: [
|
|
47
|
+
* { name: 'Signup', filter: { member: 'Events.eventType', operator: 'equals', values: ['signup'] } },
|
|
48
|
+
* { name: 'Activation', filter: { member: 'Events.eventType', operator: 'equals', values: ['activation'] }, timeToConvert: 'P7D' }
|
|
49
|
+
* ]
|
|
50
|
+
* }
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
funnel?: FunnelQueryConfig;
|
|
55
|
+
/**
|
|
56
|
+
* Flow analysis configuration for bidirectional path exploration.
|
|
57
|
+
* When specified, the query executes as a flow analysis instead of
|
|
58
|
+
* standard measures/dimensions aggregation.
|
|
59
|
+
*
|
|
60
|
+
* Flow analysis explores paths BEFORE and AFTER a defined starting step,
|
|
61
|
+
* producing Sankey diagram data (nodes and links).
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* {
|
|
66
|
+
* flow: {
|
|
67
|
+
* bindingKey: 'Events.userId',
|
|
68
|
+
* timeDimension: 'Events.timestamp',
|
|
69
|
+
* eventDimension: 'Events.eventType',
|
|
70
|
+
* startingStep: {
|
|
71
|
+
* name: 'Purchase',
|
|
72
|
+
* filter: { member: 'Events.eventType', operator: 'equals', values: ['purchase'] }
|
|
73
|
+
* },
|
|
74
|
+
* stepsBefore: 3,
|
|
75
|
+
* stepsAfter: 2
|
|
76
|
+
* }
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
flow?: FlowQueryConfig;
|
|
81
|
+
/**
|
|
82
|
+
* Retention analysis configuration for cohort-based retention tracking.
|
|
83
|
+
* When specified, the query executes as a retention analysis instead of
|
|
84
|
+
* standard measures/dimensions aggregation.
|
|
85
|
+
*
|
|
86
|
+
* Retention analysis tracks what percentage of users from each cohort
|
|
87
|
+
* return in subsequent time periods.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* {
|
|
92
|
+
* retention: {
|
|
93
|
+
* timeDimension: 'Events.timestamp',
|
|
94
|
+
* bindingKey: 'Events.userId',
|
|
95
|
+
* dateRange: { start: '2024-01-01', end: '2024-12-31' },
|
|
96
|
+
* granularity: 'week',
|
|
97
|
+
* periods: 12,
|
|
98
|
+
* retentionType: 'classic',
|
|
99
|
+
* breakdownDimensions: ['Events.country', 'Events.plan']
|
|
100
|
+
* }
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
retention?: RetentionQueryConfig;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Filter definitions with logical operators
|
|
108
|
+
*/
|
|
109
|
+
export type Filter = FilterCondition | LogicalFilter;
|
|
110
|
+
export interface FilterCondition {
|
|
111
|
+
member: string;
|
|
112
|
+
operator: FilterOperator;
|
|
113
|
+
values: any[];
|
|
114
|
+
dateRange?: string | string[];
|
|
115
|
+
}
|
|
116
|
+
export interface LogicalFilter {
|
|
117
|
+
and?: Filter[];
|
|
118
|
+
or?: Filter[];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Time dimension with granularity
|
|
122
|
+
*/
|
|
123
|
+
export interface TimeDimension {
|
|
124
|
+
dimension: string;
|
|
125
|
+
granularity?: TimeGranularity;
|
|
126
|
+
dateRange?: string | string[];
|
|
127
|
+
/**
|
|
128
|
+
* Fill missing dates in time series with the fill value.
|
|
129
|
+
* Requires both granularity and dateRange to be set.
|
|
130
|
+
* Default: true (enabled)
|
|
131
|
+
*/
|
|
132
|
+
fillMissingDates?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Array of date ranges for period-over-period comparison.
|
|
135
|
+
* When specified, queries are executed for each period and results are merged
|
|
136
|
+
* with period metadata (__periodIndex, __periodDayIndex) for alignment.
|
|
137
|
+
*
|
|
138
|
+
* Each range can be:
|
|
139
|
+
* - A relative string: 'this week', 'last month', 'last 30 days'
|
|
140
|
+
* - A tuple: ['2024-01-01', '2024-01-31']
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* compareDateRange: [
|
|
144
|
+
* 'last 30 days', // Current period
|
|
145
|
+
* ['2024-01-01', '2024-01-30'] // Prior period to compare
|
|
146
|
+
* ]
|
|
147
|
+
*/
|
|
148
|
+
compareDateRange?: (string | [string, string])[];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Supported filter operators
|
|
152
|
+
*/
|
|
153
|
+
export type FilterOperator = 'equals' | 'notEquals' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith' | 'gt' | 'gte' | 'lt' | 'lte' | 'set' | 'notSet' | 'inDateRange' | 'beforeDate' | 'afterDate' | 'between' | 'notBetween' | 'in' | 'notIn' | 'like' | 'notLike' | 'ilike' | 'regex' | 'notRegex' | 'isEmpty' | 'isNotEmpty' | 'arrayContains' | 'arrayOverlaps' | 'arrayContained';
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Filter } from './query';
|
|
2
|
+
/**
|
|
3
|
+
* Binding key mapping for multi-cube retention
|
|
4
|
+
* Maps the user/entity identifier across cohort and activity cubes
|
|
5
|
+
*/
|
|
6
|
+
export interface RetentionBindingKeyMapping {
|
|
7
|
+
cube: string;
|
|
8
|
+
dimension: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Time dimension mapping for multi-cube retention
|
|
12
|
+
* Maps the timestamp field across different cubes
|
|
13
|
+
*/
|
|
14
|
+
export interface RetentionTimeDimensionMapping {
|
|
15
|
+
cube: string;
|
|
16
|
+
dimension: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Date range for cohort analysis
|
|
20
|
+
*/
|
|
21
|
+
export interface RetentionDateRange {
|
|
22
|
+
/** Start date (inclusive), ISO 8601 format (YYYY-MM-DD) */
|
|
23
|
+
start: string;
|
|
24
|
+
/** End date (inclusive), ISO 8601 format (YYYY-MM-DD) */
|
|
25
|
+
end: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Retention query configuration (Simplified Mixpanel-style format)
|
|
29
|
+
*
|
|
30
|
+
* Key simplifications from previous version:
|
|
31
|
+
* - Single timeDimension for both cohort entry and activity
|
|
32
|
+
* - Single granularity for viewing periods (no separate cohort/period granularity)
|
|
33
|
+
* - Single cohort (date range defines the cohort) with optional breakdown
|
|
34
|
+
*/
|
|
35
|
+
export interface RetentionQueryConfig {
|
|
36
|
+
/**
|
|
37
|
+
* Single timestamp dimension for the analysis.
|
|
38
|
+
* String for single-cube (e.g., 'Events.timestamp'),
|
|
39
|
+
* Object for multi-cube with explicit cube reference.
|
|
40
|
+
*/
|
|
41
|
+
timeDimension: string | RetentionTimeDimensionMapping;
|
|
42
|
+
/**
|
|
43
|
+
* Binding key - dimension that links users across events.
|
|
44
|
+
* This is typically a user ID or other entity identifier.
|
|
45
|
+
* String for single-cube (e.g., 'Events.userId'),
|
|
46
|
+
* Array for multi-cube with different column names per cube.
|
|
47
|
+
*/
|
|
48
|
+
bindingKey: string | RetentionBindingKeyMapping[];
|
|
49
|
+
/**
|
|
50
|
+
* Date range for cohort analysis (REQUIRED).
|
|
51
|
+
* Users who first performed the cohort action within this range are included.
|
|
52
|
+
*/
|
|
53
|
+
dateRange: RetentionDateRange;
|
|
54
|
+
/**
|
|
55
|
+
* Granularity for viewing retention periods.
|
|
56
|
+
* Determines how period_number is calculated (day/week/month).
|
|
57
|
+
*/
|
|
58
|
+
granularity: 'day' | 'week' | 'month';
|
|
59
|
+
/**
|
|
60
|
+
* Number of periods to calculate (e.g., 12 for 12 weeks).
|
|
61
|
+
* Period 0 is always the cohort entry period.
|
|
62
|
+
*/
|
|
63
|
+
periods: number;
|
|
64
|
+
/**
|
|
65
|
+
* Retention type:
|
|
66
|
+
* - 'classic': User returned exactly in period N (bounded)
|
|
67
|
+
* - 'rolling': User returned in period N or any later period (unbounded)
|
|
68
|
+
*/
|
|
69
|
+
retentionType: 'classic' | 'rolling';
|
|
70
|
+
/**
|
|
71
|
+
* Optional filters on cohort entry events.
|
|
72
|
+
* Applied when identifying which users enter the cohort.
|
|
73
|
+
*/
|
|
74
|
+
cohortFilters?: Filter | Filter[];
|
|
75
|
+
/**
|
|
76
|
+
* Optional filters on return activity events.
|
|
77
|
+
* Applied when checking for user activity in each period.
|
|
78
|
+
*/
|
|
79
|
+
activityFilters?: Filter | Filter[];
|
|
80
|
+
/**
|
|
81
|
+
* Optional breakdown dimensions for segmenting the cohort.
|
|
82
|
+
* When provided, retention is calculated per unique combination of breakdown values.
|
|
83
|
+
* e.g., ["Events.country", "Events.plan"] to see retention by country and plan.
|
|
84
|
+
*/
|
|
85
|
+
breakdownDimensions?: string[];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Single retention data point in the flat result format.
|
|
89
|
+
* Results are returned as a flat array; client transforms to matrix if needed.
|
|
90
|
+
*
|
|
91
|
+
* Simplified format: no cohortPeriod since we use a single cohort model.
|
|
92
|
+
* When breakdownDimensions are specified, results include breakdownValues.
|
|
93
|
+
*/
|
|
94
|
+
export interface RetentionResultRow {
|
|
95
|
+
/** Period number (0 = cohort entry, 1 = first retention period, etc.) */
|
|
96
|
+
period: number;
|
|
97
|
+
/** Number of users in the cohort (or segment when breakdown is used) */
|
|
98
|
+
cohortSize: number;
|
|
99
|
+
/** Number of users retained in this period */
|
|
100
|
+
retainedUsers: number;
|
|
101
|
+
/** Retention rate as decimal (0-1), e.g., 0.45 for 45% */
|
|
102
|
+
retentionRate: number;
|
|
103
|
+
/**
|
|
104
|
+
* Breakdown values when breakdownDimensions are specified.
|
|
105
|
+
* Keyed by dimension name (e.g., { "Events.country": "US", "Events.plan": "pro" })
|
|
106
|
+
*/
|
|
107
|
+
breakdownValues?: Record<string, string | null>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Retention capabilities per database engine
|
|
111
|
+
*/
|
|
112
|
+
export interface RetentionCapabilities {
|
|
113
|
+
/** Whether database supports DATE_TRUNC natively */
|
|
114
|
+
supportsDateTrunc: boolean;
|
|
115
|
+
/** Whether database supports DATE_DIFF with unit specification */
|
|
116
|
+
supportsDateDiff: boolean;
|
|
117
|
+
/** Whether database supports generate_series for period generation */
|
|
118
|
+
supportsGenerateSeries: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Type guard for multi-cube binding key
|
|
122
|
+
*/
|
|
123
|
+
export declare function isRetentionMultiCubeBindingKey(bindingKey: string | RetentionBindingKeyMapping[]): bindingKey is RetentionBindingKeyMapping[];
|
|
124
|
+
/**
|
|
125
|
+
* Type guard for multi-cube time dimension (object form)
|
|
126
|
+
*/
|
|
127
|
+
export declare function isRetentionMultiCubeTimeDimension(timeDimension: string | RetentionTimeDimensionMapping): timeDimension is RetentionTimeDimensionMapping;
|
|
128
|
+
/**
|
|
129
|
+
* Type guard for retention query
|
|
130
|
+
*/
|
|
131
|
+
export declare function isRetentionQuery(query: unknown): query is {
|
|
132
|
+
retention: RetentionQueryConfig;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Extract cube name from a time dimension specification
|
|
136
|
+
*/
|
|
137
|
+
export declare function extractCubeFromTimeDimension(timeDimension: string | RetentionTimeDimensionMapping): string;
|
|
138
|
+
/**
|
|
139
|
+
* Extract dimension name from a time dimension specification
|
|
140
|
+
*/
|
|
141
|
+
export declare function extractDimensionFromTimeDimension(timeDimension: string | RetentionTimeDimensionMapping): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SQL, AnyColumn } from 'drizzle-orm';
|
|
2
|
+
import { QueryContext } from './cube';
|
|
3
|
+
/**
|
|
4
|
+
* Type-level utility to extract the schema type from a cube reference
|
|
5
|
+
* Since we removed generics, this now returns 'any'
|
|
6
|
+
*/
|
|
7
|
+
export type ExtractSchemaFromCubeRef = any;
|
|
8
|
+
/**
|
|
9
|
+
* Type for SQL expressions that can be functions or direct values
|
|
10
|
+
*/
|
|
11
|
+
export type SqlExpression = AnyColumn | SQL | ((ctx: QueryContext) => AnyColumn | SQL);
|