drizzle-cube 0.7.1 → 0.8.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/dist/adapters/ActivityGridChart.config-BQhBE_Mr.js +2 -0
- package/dist/adapters/ActivityGridChart.config-C3tSuOGV.cjs +1 -0
- package/dist/adapters/AreaChart.config-3cme8HyQ.js +2 -0
- package/dist/adapters/AreaChart.config-BSxrT52Z.cjs +1 -0
- package/dist/adapters/BarChart.config-BKS8IecE.cjs +1 -0
- package/dist/adapters/BarChart.config-lt_7PdIi.js +2 -0
- package/dist/adapters/BoxPlotChart.config-B7qvRnrF.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-Dv6ECj2j.js +2 -0
- package/dist/adapters/BubbleChart.config-BrIH7OAy.cjs +1 -0
- package/dist/adapters/BubbleChart.config-Fhotb7Pg.js +2 -0
- package/dist/adapters/CandlestickChart.config-CWH41FmF.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-RPtXuxsX.js +2 -0
- package/dist/adapters/DataTable.config-71L0GzlT.js +2 -0
- package/dist/adapters/DataTable.config-BsOMQq3J.cjs +1 -0
- package/dist/adapters/FunnelChart.config-Cqte9C04.cjs +1 -0
- package/dist/adapters/FunnelChart.config-DJtwWeNz.js +2 -0
- package/dist/adapters/GaugeChart.config-WkwZ9VdS.cjs +1 -0
- package/dist/adapters/GaugeChart.config-vpVQlP5B.js +2 -0
- package/dist/adapters/HeatMapChart.config-DcmkDl07.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-DsmMgGxJ.js +2 -0
- package/dist/adapters/KpiDelta.config-DVy561BH.js +2 -0
- package/dist/adapters/KpiDelta.config-dpqwLHNE.cjs +1 -0
- package/dist/adapters/KpiNumber.config-927l8nq8.js +2 -0
- package/dist/adapters/KpiNumber.config-BqFBMfPf.cjs +1 -0
- package/dist/adapters/KpiText.config-C-fZXuHq.cjs +1 -0
- package/dist/adapters/KpiText.config-CWoXuhMA.js +2 -0
- package/dist/adapters/LineChart.config-DTp7pqOY.js +2 -0
- package/dist/adapters/LineChart.config-DUGvSjcH.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-23Dmv2Ty.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-Cb2TnS0I.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-B2qbWdhy.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-CvBCeI5b.js +2 -0
- package/dist/adapters/PieChart.config-BzJb13QA.js +2 -0
- package/dist/adapters/PieChart.config-plCn5Ehr.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-1r-_moBH.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-CN6TtHTp.js +2 -0
- package/dist/adapters/RadarChart.config-BYhdj9M7.js +2 -0
- package/dist/adapters/RadarChart.config-CeUMP-1g.cjs +1 -0
- package/dist/adapters/RadialBarChart.config-B88yXNsq.cjs +1 -0
- package/dist/adapters/RadialBarChart.config-ZMK9HMoh.js +2 -0
- package/dist/adapters/RetentionCombinedChart.config-B5yvgUHM.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-Dd-YMdK8.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-BYzDleoV.cjs +1 -0
- package/dist/adapters/RetentionHeatmap.config-Dvj7yTB0.js +2 -0
- package/dist/adapters/SankeyChart.config-CPFRmgFb.cjs +1 -0
- package/dist/adapters/SankeyChart.config-ClgqXM1N.js +2 -0
- package/dist/adapters/ScatterChart.config-CvJiqPa5.cjs +1 -0
- package/dist/adapters/ScatterChart.config-DLZ3rYMq.js +2 -0
- package/dist/adapters/SunburstChart.config-C_1V5hoQ.cjs +1 -0
- package/dist/adapters/SunburstChart.config-FNU75NCg.js +2 -0
- package/dist/adapters/TreeMapChart.config-CprZk_YF.js +2 -0
- package/dist/adapters/TreeMapChart.config-DNwd0ge9.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-BBhcN_Fh.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-H7s6SSV3.js +2 -0
- package/dist/adapters/{compiler-BNjqYdmc.cjs → compiler-BaLO10VN.cjs} +7 -7
- package/dist/adapters/{compiler-DiYxWAKg.js → compiler-CQJ5GOwF.js} +286 -119
- package/dist/adapters/core/http-port.d.ts +34 -7
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.d.ts +1 -0
- package/dist/adapters/core/index.js +2 -2
- package/dist/adapters/core/rest-handlers.d.ts +1 -1
- package/dist/adapters/{core-BOPRmxPc.js → core-DXkuSUBg.js} +80 -64
- package/dist/adapters/core-DgTGXxDu.cjs +1 -0
- package/dist/adapters/express/index.cjs +2 -2
- package/dist/adapters/express/index.d.ts +11 -2
- package/dist/adapters/express/index.js +14 -14
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.d.ts +11 -2
- package/dist/adapters/fastify/index.js +12 -12
- package/dist/adapters/{handler-DGud-C-w.js → handler-CphYSZRh.js} +74 -74
- package/dist/adapters/{handler-m6WgA9xu.cjs → handler-DrRT6c14.cjs} +8 -8
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +9 -9
- package/dist/adapters/mcp-tools-handlers.d.ts +10 -3
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +18 -20
- package/dist/adapters/mcp-transport-BGkSz-ZT.cjs +40 -0
- package/dist/adapters/mcp-transport-fJud19xz.js +606 -0
- package/dist/adapters/mcp-transport.d.ts +13 -2
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.d.ts +5 -2
- package/dist/adapters/nextjs/index.js +32 -32
- package/dist/adapters/{openai-CGJM6Qun.js → openai-CBrN4nxl.js} +2 -2
- package/dist/adapters/{openai-Dwt9bxOE.cjs → openai-CI9vGKSf.cjs} +1 -1
- package/dist/adapters/{openai-CmdN7Sj1.cjs → openai-CSzWluuv.cjs} +1 -1
- package/dist/{server/openai-Czk1BdHa.js → adapters/openai-D-VMcPao.js} +1 -1
- package/dist/adapters/{utils-BoOeig94.cjs → utils-BY0-KFyI.cjs} +2 -2
- package/dist/adapters/{utils-DboNUT3A.js → utils-DkmShl5f.js} +23 -20
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +2 -2
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/adapters/core/http-port.d.ts +34 -7
- package/dist/cjs/adapters/core/index.d.ts +1 -0
- package/dist/cjs/adapters/core/rest-handlers.d.ts +1 -1
- package/dist/cjs/adapters/express/index.d.ts +11 -2
- package/dist/cjs/adapters/fastify/index.d.ts +11 -2
- package/dist/cjs/adapters/mcp-tools-handlers.d.ts +10 -3
- package/dist/cjs/adapters/mcp-transport.d.ts +13 -2
- package/dist/cjs/adapters/nextjs/index.d.ts +5 -2
- package/dist/cjs/adapters/utils.d.ts +2 -2
- package/dist/cjs/server/adapters/base-adapter.d.ts +46 -0
- package/dist/cjs/server/adapters/databend-adapter.d.ts +5 -0
- package/dist/cjs/server/adapters/duckdb-adapter.d.ts +5 -0
- package/dist/cjs/server/adapters/mysql-adapter.d.ts +14 -0
- package/dist/cjs/server/adapters/postgres-adapter.d.ts +15 -0
- package/dist/cjs/server/adapters/snowflake-adapter.d.ts +6 -0
- package/dist/cjs/server/adapters/sqlite-adapter.d.ts +21 -0
- package/dist/cjs/server/attribute-dimensions.d.ts +99 -0
- package/dist/cjs/server/cache-utils.d.ts +5 -1
- package/dist/cjs/server/compiler-metadata.d.ts +24 -3
- package/dist/cjs/server/compiler.d.ts +157 -10
- package/dist/cjs/server/execution/query-result-cache.d.ts +1 -1
- package/dist/cjs/server/index.d.ts +11 -3
- package/dist/cjs/server/query-handlers.d.ts +1 -1
- package/dist/cjs/server/types/core.d.ts +8 -0
- package/dist/cjs/server/types/cube.d.ts +27 -2
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-BOfLdTgV.js → DashboardEditModal-9An5EDAz.js} +12 -12
- package/dist/client/chunks/{DashboardEditModal-BOfLdTgV.js.map → DashboardEditModal-9An5EDAz.js.map} +1 -1
- package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js → ProportionBarChart-BVcbGY2C.js} +3 -3
- package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js.map → ProportionBarChart-BVcbGY2C.js.map} +1 -1
- package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js → RetentionCombinedChart-D68Rvdi-.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js.map → RetentionCombinedChart-D68Rvdi-.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js → RetentionHeatmap-CE7BAjrB.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js.map → RetentionHeatmap-CE7BAjrB.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-DXw60SEs.js → analysis-builder-D1pYvvwc.js} +9 -9
- package/dist/client/chunks/{analysis-builder-DXw60SEs.js.map → analysis-builder-D1pYvvwc.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-CEvHIlmk.js → analysis-builder-shared-BQvwUc6z.js} +9 -9
- package/dist/client/chunks/{analysis-builder-shared-CEvHIlmk.js.map → analysis-builder-shared-BQvwUc6z.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-4jfS8khG.js → chart-activity-grid-DvD_4wJz.js} +5 -2
- package/dist/client/chunks/chart-activity-grid-DvD_4wJz.js.map +1 -0
- package/dist/client/chunks/{chart-area-Dol6s9no.js → chart-area-DPp3hSOK.js} +2 -2
- package/dist/client/chunks/{chart-area-Dol6s9no.js.map → chart-area-DPp3hSOK.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-5_niozi2.js → chart-bar-Od3pOyZ0.js} +3 -3
- package/dist/client/chunks/{chart-bar-5_niozi2.js.map → chart-bar-Od3pOyZ0.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js → chart-box-plot-l0iFn2n2.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js.map → chart-box-plot-l0iFn2n2.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-BM2BAMSo.js → chart-bubble-Dl0RcP8N.js} +2 -2
- package/dist/client/chunks/{chart-bubble-BM2BAMSo.js.map → chart-bubble-Dl0RcP8N.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js → chart-candlestick-DZMqbscF.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js.map → chart-candlestick-DZMqbscF.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-DoDHQRe7.js → chart-data-table-DgiNBOWf.js} +3 -3
- package/dist/client/chunks/chart-data-table-DgiNBOWf.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-Cd7da_sa.js → chart-funnel-YLZlyN1X.js} +2 -2
- package/dist/client/chunks/{chart-funnel-Cd7da_sa.js.map → chart-funnel-YLZlyN1X.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DOpul-Oz.js → chart-gauge-BsqE2wwF.js} +3 -3
- package/dist/client/chunks/{chart-gauge-DOpul-Oz.js.map → chart-gauge-BsqE2wwF.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-CeKbK655.js → chart-heat-map-BsND8RM_.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-CeKbK655.js.map → chart-heat-map-BsND8RM_.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js → chart-kpi-delta-m0azuva-.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js.map → chart-kpi-delta-m0azuva-.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js → chart-kpi-number-6JS15SqF.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js.map → chart-kpi-number-6JS15SqF.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js → chart-kpi-text-BqX8p8Jn.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js.map → chart-kpi-text-BqX8p8Jn.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DlwOB7C7.js → chart-line-NCmpxBfE.js} +3 -3
- package/dist/client/chunks/{chart-line-DlwOB7C7.js.map → chart-line-NCmpxBfE.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-DPE34SjC.js → chart-markdown-ZOobqiiX.js} +2 -2
- package/dist/client/chunks/{chart-markdown-DPE34SjC.js.map → chart-markdown-ZOobqiiX.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js → chart-measure-profile-CBAZaicJ.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js.map → chart-measure-profile-CBAZaicJ.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-FGw66XAH.js → chart-pie-ChrasEI8.js} +3 -3
- package/dist/client/chunks/{chart-pie-FGw66XAH.js.map → chart-pie-ChrasEI8.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-D-eRDoiA.js → chart-radar-CxSVF7yL.js} +3 -3
- package/dist/client/chunks/{chart-radar-D-eRDoiA.js.map → chart-radar-CxSVF7yL.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js → chart-radial-bar--SN0Wph0.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js.map → chart-radial-bar--SN0Wph0.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js → chart-sankey-CDOSGg9r.js} +2 -2
- package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js.map → chart-sankey-CDOSGg9r.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js → chart-scatter-DgcEF-kI.js} +3 -3
- package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js.map → chart-scatter-DgcEF-kI.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js → chart-sunburst-MB-jlGBm.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js.map → chart-sunburst-MB-jlGBm.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js → chart-tree-map-DeDXveVd.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js.map → chart-tree-map-DeDXveVd.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js → chart-waterfall-ur4vkO1j.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js.map → chart-waterfall-ur4vkO1j.js.map} +1 -1
- package/dist/client/chunks/{charts-core-BPD_hLaL.js → charts-core-BAH5pkSB.js} +2 -2
- package/dist/client/chunks/{charts-core-BPD_hLaL.js.map → charts-core-BAH5pkSB.js.map} +1 -1
- package/dist/client/chunks/charts-loader-eToV8je7.js +85 -0
- package/dist/client/chunks/{charts-loader-CwMcOfwT.js.map → charts-loader-eToV8je7.js.map} +1 -1
- package/dist/client/chunks/{exceljs.min-DWC_b8G9.js → exceljs.min-CiByP8VQ.js} +2 -3
- package/dist/client/chunks/{exceljs.min-DWC_b8G9.js.map → exceljs.min-CiByP8VQ.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-DFLVORiD.js → nl-NL-CMXHDBr0.js} +4 -1
- package/dist/client/chunks/nl-NL-CMXHDBr0.js.map +1 -0
- package/dist/client/chunks/{schema-visualization-C6g_LCiA.js → schema-visualization-BEbFtUIL.js} +3 -3
- package/dist/client/chunks/{schema-visualization-C6g_LCiA.js.map → schema-visualization-BEbFtUIL.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js → useDirtyStateTracking-CSDg96Rw.js} +4 -4
- package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js.map → useDirtyStateTracking-CSDg96Rw.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-im9e1rVb.js → useExplainAI-BnkoZ-zS.js} +4 -4
- package/dist/client/chunks/{useExplainAI-im9e1rVb.js.map → useExplainAI-BnkoZ-zS.js.map} +1 -1
- package/dist/client/chunks/{vendor-Qa1s8oSX.js → vendor-BmJDaduD.js} +2 -2
- package/dist/client/chunks/vendor-BmJDaduD.js.map +1 -0
- package/dist/client/components.js +1 -1
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +13 -13
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/utils.js +4 -4
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +43 -43
- package/dist/server/adapters/base-adapter.d.ts +46 -0
- package/dist/server/adapters/databend-adapter.d.ts +5 -0
- package/dist/server/adapters/duckdb-adapter.d.ts +5 -0
- package/dist/server/adapters/mysql-adapter.d.ts +14 -0
- package/dist/server/adapters/postgres-adapter.d.ts +15 -0
- package/dist/server/adapters/snowflake-adapter.d.ts +6 -0
- package/dist/server/adapters/sqlite-adapter.d.ts +21 -0
- package/dist/server/attribute-dimensions.d.ts +99 -0
- package/dist/server/cache-utils.d.ts +5 -1
- package/dist/server/compiler-metadata.d.ts +24 -3
- package/dist/server/compiler.d.ts +157 -10
- package/dist/server/execution/query-result-cache.d.ts +1 -1
- package/dist/server/index.cjs +39 -35
- package/dist/server/index.d.ts +11 -3
- package/dist/server/index.js +673 -477
- package/dist/{adapters/openai-Crp3X_zg.js → server/openai-6uUf7h-5.js} +1 -1
- package/dist/server/{openai-DBwI1OSu.cjs → openai-BBe1XbZd.cjs} +1 -1
- package/dist/server/{openai-Cu4TXXjl.cjs → openai-BmADmD1e.cjs} +1 -1
- package/dist/server/{openai-CUf4vc3Q.js → openai-C1gLuR-0.js} +1 -1
- package/dist/server/query-handlers.d.ts +1 -1
- package/dist/server/types/core.d.ts +8 -0
- package/dist/server/types/cube.d.ts +27 -2
- package/package.json +2 -2
- package/dist/adapters/ActivityGridChart.config-D6hhj345.cjs +0 -1
- package/dist/adapters/ActivityGridChart.config-QZKs_NYg.js +0 -2
- package/dist/adapters/AreaChart.config-B5XM6G22.js +0 -2
- package/dist/adapters/AreaChart.config-NP34BH5y.cjs +0 -1
- package/dist/adapters/BarChart.config-Bqlmr81N.js +0 -2
- package/dist/adapters/BarChart.config-C3bw-cAP.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-BOAvoj6x.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-CTXiycYY.js +0 -2
- package/dist/adapters/BubbleChart.config-CGFIkl4H.cjs +0 -1
- package/dist/adapters/BubbleChart.config-Njxx4Eq1.js +0 -2
- package/dist/adapters/CandlestickChart.config-BZ_yWaSo.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-D4Svhmef.js +0 -2
- package/dist/adapters/DataTable.config-B-bT9puT.js +0 -2
- package/dist/adapters/DataTable.config-BHtt1cPM.cjs +0 -1
- package/dist/adapters/FunnelChart.config-C1e07O7B.cjs +0 -1
- package/dist/adapters/FunnelChart.config-CVEy0tV9.js +0 -2
- package/dist/adapters/GaugeChart.config-5PLNlQlu.js +0 -2
- package/dist/adapters/GaugeChart.config-Cdv6knjZ.cjs +0 -1
- package/dist/adapters/HeatMapChart.config-MGTfYpWJ.js +0 -2
- package/dist/adapters/HeatMapChart.config-jfBEi1ZI.cjs +0 -1
- package/dist/adapters/KpiDelta.config-D2IUsEYz.cjs +0 -1
- package/dist/adapters/KpiDelta.config-DT_MmAHw.js +0 -2
- package/dist/adapters/KpiNumber.config-ChgbKmx8.cjs +0 -1
- package/dist/adapters/KpiNumber.config-CvZ_FhyL.js +0 -2
- package/dist/adapters/KpiText.config-Bgkw8gr2.js +0 -2
- package/dist/adapters/KpiText.config-Bz9orqt6.cjs +0 -1
- package/dist/adapters/LineChart.config-BVew35dI.cjs +0 -1
- package/dist/adapters/LineChart.config-DSCCKXNg.js +0 -2
- package/dist/adapters/MarkdownChart.config-Bu6XUuhI.js +0 -2
- package/dist/adapters/MarkdownChart.config-E4aSVTf3.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-BF249hc_.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-lERVe38G.js +0 -2
- package/dist/adapters/PieChart.config-7Ujwp8R5.cjs +0 -1
- package/dist/adapters/PieChart.config-jQl2HIcA.js +0 -2
- package/dist/adapters/ProportionBarChart.config-o0w_Pnlt.js +0 -2
- package/dist/adapters/ProportionBarChart.config-phNohhhY.cjs +0 -1
- package/dist/adapters/RadarChart.config-BmrYBd9x.js +0 -2
- package/dist/adapters/RadarChart.config-Dlt3UflG.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-CeEm8xRb.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-Dishh6bC.js +0 -2
- package/dist/adapters/RetentionCombinedChart.config-BaD4ev85.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-m2FjBUi9.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-DiMplGdk.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-Dp6oYwQZ.cjs +0 -1
- package/dist/adapters/SankeyChart.config-C4Y6qzCS.cjs +0 -1
- package/dist/adapters/SankeyChart.config-CJHqgjQ1.js +0 -2
- package/dist/adapters/ScatterChart.config-C0QqvDrN.cjs +0 -1
- package/dist/adapters/ScatterChart.config-DywOsWPW.js +0 -2
- package/dist/adapters/SunburstChart.config-DE8RxpDR.cjs +0 -1
- package/dist/adapters/SunburstChart.config-DohowrO3.js +0 -2
- package/dist/adapters/TreeMapChart.config-D2gXz-zC.cjs +0 -1
- package/dist/adapters/TreeMapChart.config-HMlI29GG.js +0 -2
- package/dist/adapters/WaterfallChart.config-BO2WV2VB.js +0 -2
- package/dist/adapters/WaterfallChart.config-CzwGiheB.cjs +0 -1
- package/dist/adapters/core-CzFfrJzu.cjs +0 -1
- package/dist/adapters/mcp-transport-B0b27YUB.cjs +0 -40
- package/dist/adapters/mcp-transport-BXyA4dTk.js +0 -603
- package/dist/client/chunks/chart-activity-grid-4jfS8khG.js.map +0 -1
- package/dist/client/chunks/chart-data-table-DoDHQRe7.js.map +0 -1
- package/dist/client/chunks/charts-loader-CwMcOfwT.js +0 -85
- package/dist/client/chunks/nl-NL-DFLVORiD.js.map +0 -1
- package/dist/client/chunks/vendor-Qa1s8oSX.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function*e(e,t){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}function*t(e,t){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:e}}function*n(n,r){n.usage&&(yield{type:`message_meta`,inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,stopReason:``});let i=n.choices?.[0];if(!i)return;let a=i.delta;if(a){if(a.content&&(yield{type:`text_delta`,text:a.content}),a.tool_calls)for(let t of a.tool_calls)yield*e(t,r);i.finish_reason&&(yield*t(i.finish_reason,r))}}var r=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require("./openai-
|
|
1
|
+
function*e(e,t){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}function*t(e,t){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:e}}function*n(n,r){n.usage&&(yield{type:`message_meta`,inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,stopReason:``});let i=n.choices?.[0];if(!i)return;let a=i.delta;if(a){if(a.content&&(yield{type:`text_delta`,text:a.content}),a.tool_calls)for(let t of a.tool_calls)yield*e(t,r);i.finish_reason&&(yield*t(i.finish_reason,r))}}var r=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require("./openai-BmADmD1e.cjs"));e=t.default||t.OpenAI||t}catch{throw Error(`openai is required for the OpenAI provider. Install it with: npm install openai`)}let t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t}=this.formatMessages(e.messages,e.system);return this.client.chat.completions.create({model:e.model,max_completion_tokens:e.maxTokens,tools:this.formatTools(e.tools),messages:t,stream:!0,stream_options:{include_usage:!0}})}async*parseStreamEvents(e){let t=new Map;for await(let r of e)yield*n(r,t)}formatTools(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}formatMessages(e,t){let n=[{role:`system`,content:t}];for(let t of e)if(t.role===`user`)n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});else if(t.role===`assistant`){if(typeof t.content==`string`)n.push({role:`assistant`,content:t.content});else{let e=t.content,r=e.filter(e=>e.type===`text`).map(e=>e.text).join(``),i=e.filter(e=>e.type===`tool_use`).map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input||{})}})),a={role:`assistant`};r&&(a.content=r),i.length>0&&(a.tool_calls=i),n.push(a)}}else t.role===`tool`?n.push(t):t.role===`tool_result`&&n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});return{messages:n}}formatToolResults(e){return e.map(e=>({role:`tool`,tool_call_id:e.toolUseId,content:e.content}))}shouldContinue(e){return e===`tool_calls`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===502?`The AI service is temporarily unavailable. Please try again in a moment.`:n.status===400?`There was a problem with the request. Please try again.`:t.startsWith(`{`)||t.startsWith(`Error: {`)?`The AI service encountered an error. Please try again.`:t}};exports.OpenAIProvider=r;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-DF3sbh8G.cjs");function t(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function n(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var r=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return r=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^n()&15>>e/4).toString(16))};function i(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var a=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},o=class extends Error{},s=class e extends o{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`x-request-id`),this.error=n;let a=n;this.code=a?.code,this.param=a?.param,this.type=a?.type}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new l({message:r,cause:a(n)});let o=n?.error;return t===400?new d(t,o,r,i):t===401?new f(t,o,r,i):t===403?new p(t,o,r,i):t===404?new m(t,o,r,i):t===409?new h(t,o,r,i):t===422?new g(t,o,r,i):t===429?new _(t,o,r,i):t>=500?new v(t,o,r,i):new e(t,o,r,i)}},c=class extends s{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},l=class extends s{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},u=class extends l{constructor({message:e}={}){super({message:e??`Request timed out.`})}},d=class extends s{},f=class extends s{},p=class extends s{},m=class extends s{},h=class extends s{},g=class extends s{},_=class extends s{},v=class extends s{},y=class extends o{constructor(){super(`Could not parse response content as the length limit was reached`)}},b=class extends o{constructor(){super(`Could not parse response content as the request was rejected by the content filter`)}},x=class extends Error{constructor(e){super(e)}},S=class extends s{constructor(e,t,n){let r=`OAuth2 authentication error`,i;if(t&&typeof t==`object`){let e=t;i=e.error;let n=e.error_description;n&&typeof n==`string`?r=n:i&&(r=i)}super(e,t,r,n),this.error_code=i}},C=class extends o{constructor(e,t,n){super(e),this.provider=t,this.cause=n}},w=/^[a-z][a-z0-9+.-]*:/i,ee=e=>w.test(e),T=e=>(T=Array.isArray,T(e)),te=T;function ne(e){return typeof e==`object`?e??{}:{}}function re(e){if(!e)return!0;for(let t in e)return!1;return!0}function E(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ie(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ae=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new o(`${e} must be an integer`);if(t<0)throw new o(`${e} must be a positive integer`);return t},oe=e=>{try{return JSON.parse(e)}catch{return}},se=e=>new Promise(t=>setTimeout(t,e));function ce(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function le(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function ue(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return le({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function de(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function fe(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var pe;function me(e){let t;return(pe??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var he;function ge(e){let t;return(he??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var _e,D,O,k,ve,ye,be,xe=65536,Se=class{constructor(){_e.add(this),D.set(this,void 0),O.set(this,void 0),k.set(this,void 0),ve.set(this,void 0),ye.set(this,void 0),t(this,D,new Uint8Array,`f`),t(this,O,0,`f`),t(this,k,0,`f`),t(this,ve,0,`f`),t(this,ye,!1,`f`)}decode(e){if(e==null)return[];let r;if(r=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?me(e):e,r.length===0||n(this,ye,`f`)&&(t(this,ye,!1,`f`),r[0]===10&&(r=r.subarray(1)),r.length===0))return[];n(this,_e,`m`,be).call(this,r);let i=[],a;for(;(a=Ce(n(this,D,`f`),n(this,ve,`f`),n(this,k,`f`)))!=null;){let e=ge(n(this,D,`f`).subarray(n(this,O,`f`),a.preceding));i.push(e),t(this,O,a.index,`f`),a.carriage&&(n(this,O,`f`)<n(this,k,`f`)&&n(this,D,`f`)[n(this,O,`f`)]===10?t(this,O,n(this,O,`f`)+1,`f`):n(this,O,`f`)===n(this,k,`f`)&&t(this,ye,!0,`f`)),t(this,ve,n(this,O,`f`),`f`)}if(t(this,ve,n(this,k,`f`),`f`),n(this,O,`f`)===n(this,k,`f`))t(this,O,0,`f`),t(this,k,0,`f`),t(this,ve,0,`f`),n(this,D,`f`).length>xe&&t(this,D,new Uint8Array,`f`);else if(i.length>0&&n(this,D,`f`).length>xe){let e=n(this,k,`f`)-n(this,O,`f`);if(e<=xe||n(this,D,`f`).length>e*4){let r=e<=xe?Math.min(Math.max(e*2,256),xe):e*2,i=new Uint8Array(r);i.set(n(this,D,`f`).subarray(n(this,O,`f`),n(this,k,`f`))),t(this,D,i,`f`),t(this,O,0,`f`),t(this,k,e,`f`),t(this,ve,e,`f`)}}return i}flush(){return t(this,ye,!1,`f`),n(this,O,`f`)===n(this,k,`f`)?[]:this.decode(`
|
|
1
|
+
const e=require("./rolldown-runtime-DF3sbh8G.cjs");function t(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function n(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var r=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return r=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(+e^n()&15>>e/4).toString(16))};function i(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var a=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},o=class extends Error{},s=class e extends o{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`x-request-id`),this.error=n;let a=n;this.code=a?.code,this.param=a?.param,this.type=a?.type}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new l({message:r,cause:a(n)});let o=n?.error;return t===400?new d(t,o,r,i):t===401?new f(t,o,r,i):t===403?new p(t,o,r,i):t===404?new m(t,o,r,i):t===409?new h(t,o,r,i):t===422?new g(t,o,r,i):t===429?new _(t,o,r,i):t>=500?new v(t,o,r,i):new e(t,o,r,i)}},c=class extends s{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},l=class extends s{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},u=class extends l{constructor({message:e}={}){super({message:e??`Request timed out.`})}},d=class extends s{},f=class extends s{},p=class extends s{},m=class extends s{},h=class extends s{},g=class extends s{},_=class extends s{},v=class extends s{},y=class extends o{constructor(){super(`Could not parse response content as the length limit was reached`)}},b=class extends o{constructor(){super(`Could not parse response content as the request was rejected by the content filter`)}},x=class extends Error{constructor(e){super(e)}},S=class extends s{constructor(e,t,n){let r=`OAuth2 authentication error`,i;if(t&&typeof t==`object`){let e=t;i=e.error;let n=e.error_description;n&&typeof n==`string`?r=n:i&&(r=i)}super(e,t,r,n),this.error_code=i}},C=class extends o{constructor(e,t,n){super(e),this.provider=t,this.cause=n}},w=/^[a-z][a-z0-9+.-]*:/i,ee=e=>w.test(e),T=e=>(T=Array.isArray,T(e)),te=T;function ne(e){return typeof e==`object`?e??{}:{}}function re(e){if(!e)return!0;for(let t in e)return!1;return!0}function E(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ie(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ae=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new o(`${e} must be an integer`);if(t<0)throw new o(`${e} must be a positive integer`);return t},oe=e=>{try{return JSON.parse(e)}catch{return}},se=e=>new Promise(t=>setTimeout(t,e));function ce(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function le(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function ue(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return le({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function de(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function fe(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var pe;function me(e){let t;return(pe??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var he;function ge(e){let t;return(he??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var _e,D,O,k,ve,ye,be,xe=65536,Se=class{constructor(){_e.add(this),D.set(this,void 0),O.set(this,void 0),k.set(this,void 0),ve.set(this,void 0),ye.set(this,void 0),t(this,D,new Uint8Array,`f`),t(this,O,0,`f`),t(this,k,0,`f`),t(this,ve,0,`f`),t(this,ye,!1,`f`)}decode(e){if(e==null)return[];let r;if(r=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?me(e):e,r.length===0||n(this,ye,`f`)&&(t(this,ye,!1,`f`),r[0]===10&&(r=r.subarray(1)),r.length===0))return[];n(this,_e,`m`,be).call(this,r);let i=[],a;for(;(a=Ce(n(this,D,`f`),n(this,ve,`f`),n(this,k,`f`)))!=null;){let e=ge(n(this,D,`f`).subarray(n(this,O,`f`),a.preceding));i.push(e),t(this,O,a.index,`f`),a.carriage&&(n(this,O,`f`)<n(this,k,`f`)&&n(this,D,`f`)[n(this,O,`f`)]===10?t(this,O,n(this,O,`f`)+1,`f`):n(this,O,`f`)===n(this,k,`f`)&&t(this,ye,!0,`f`)),t(this,ve,n(this,O,`f`),`f`)}if(t(this,ve,n(this,k,`f`),`f`),n(this,O,`f`)===n(this,k,`f`))t(this,O,0,`f`),t(this,k,0,`f`),t(this,ve,0,`f`),n(this,D,`f`).length>xe&&t(this,D,new Uint8Array,`f`);else if(i.length>0&&n(this,D,`f`).length>xe){let e=n(this,k,`f`)-n(this,O,`f`);if(e<=xe||n(this,D,`f`).length>e*4){let r=e<=xe?Math.min(Math.max(e*2,256),xe):e*2,i=new Uint8Array(r);i.set(n(this,D,`f`).subarray(n(this,O,`f`),n(this,k,`f`))),t(this,D,i,`f`),t(this,O,0,`f`),t(this,k,e,`f`),t(this,ve,e,`f`)}}return i}flush(){return t(this,ye,!1,`f`),n(this,O,`f`)===n(this,k,`f`)?[]:this.decode(`
|
|
2
2
|
`)}};D=new WeakMap,O=new WeakMap,k=new WeakMap,ve=new WeakMap,ye=new WeakMap,_e=new WeakSet,be=function(e){if(n(this,k,`f`)+e.length>n(this,D,`f`).length){let r=n(this,k,`f`)-n(this,O,`f`);if(n(this,O,`f`)>=n(this,D,`f`).length/2&&r+e.length<=n(this,D,`f`).length)n(this,D,`f`).copyWithin(0,n(this,O,`f`),n(this,k,`f`));else{let i=Math.max(n(this,D,`f`).length*2,r+e.length,256),a=new Uint8Array(i);a.set(n(this,D,`f`).subarray(n(this,O,`f`),n(this,k,`f`))),t(this,D,a,`f`)}t(this,ve,n(this,ve,`f`)-n(this,O,`f`),`f`),t(this,k,r,`f`),t(this,O,0,`f`)}n(this,D,`f`).set(e,n(this,k,`f`)),t(this,k,n(this,k,`f`)+e.length,`f`)},Se.NEWLINE_CHARS=new Set([`
|
|
3
3
|
`,`\r`]),Se.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function Ce(e,t,n){for(let r=t;r<n;r++){if(e[r]===10)return{preceding:r,index:r+1,carriage:!1};if(e[r]===13)return{preceding:r,index:r+1,carriage:!0}}return null}function we(e){for(let t=0;t<e.length-1;t++){let n=Te(e,t);if(n>0){let r=t+n,i=Te(e,r);if(i>0)return r+i}}return-1}function Te(e,t){return e[t]===10?1:e[t]===13?e[t+1]===10?2:1:0}var Ee={off:0,error:200,warn:300,info:400,debug:500},De=(e,t,n)=>{if(e){if(E(Ee,e))return e;A(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(Ee))}`)}};function Oe(){}function ke(e,t,n){return!t||Ee[e]>Ee[n]?Oe:t[e].bind(t)}var Ae={error:Oe,warn:Oe,info:Oe,debug:Oe},je=new WeakMap;function A(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return Ae;let r=je.get(t);if(r&&r[0]===n)return r[1];let i={error:ke(`error`,t,n),warn:ke(`warn`,t,n),info:ke(`info`,t,n),debug:ke(`debug`,t,n)};return je.set(t,[n,i]),i}var Me=new Set([`apikey`,`accesstoken`,`refreshtoken`,`sessiontoken`,`sessionid`,`idtoken`,`authtoken`,`authorization`,`token`,`password`,`clientsecret`,`xamzsecuritytoken`,`xamzsignature`,`xamzcredential`]);function Ne(e){let t=e.toLowerCase().replace(/[-_]/gu,``);return Me.has(t)||Me.has(t.replace(/^x/u,``))}var Pe=new Set([`authorization`,`proxy-authorization`,`api-key`,`x-api-key`,`x-amz-security-token`,`cookie`,`set-cookie`,`x-session-token`,`x-session-id`,`x-auth-token`,`x-id-token`]);function Fe(e){return Pe.has(e.toLowerCase().replace(/_/gu,`-`))||Ne(e)}function Ie(e){let t=new URL(e);t.username=``,t.password=``,t.hash=``;for(let e of t.searchParams.keys())Ne(e)&&t.searchParams.set(e,`***`);return t.href}var Le=e=>{if(e.options){if(e.options={...e.options},delete e.options.headers,e.options.path){let t=e.options.path,n=new URL(Ie(new URL(t,`https://redacted.invalid`).href));e.options.path=n.origin===`https://redacted.invalid`?`${t.startsWith(`/`)?`/`:``}${n.pathname.slice(1)}${n.search}`:n.href}e.options.query&&(e.options.query=Object.fromEntries(Object.entries(e.options.query).map(([e,t])=>[e,Ne(e)?`***`:t])))}return e.url&&=Ie(e.url),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,Fe(e)?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e},Re;function ze(){let e=[],t=0;return{get length(){return e.length-t},enqueue(t){e.push(t)},dequeue(){if(t===e.length)return;let n=e[t];return e[t]=void 0,t+=1,t===e.length?(e=[],t=0):t>=1024&&t*2>=e.length&&(e=e.slice(t),t=0),n}}}var Be=class e{constructor(e,n,r){Re.set(this,void 0),this.iterator=e,this.controller=n,t(this,Re,r,`f`)}static fromSSEResponse(t,n,r,a){let c=!1,l=r?A(r):console;async function*u(){if(c)throw new o("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");c=!0;let e=!1,r=!1;try{for await(let e of He(t,n)){if(e.data===`[DONE]`){r=!0;break}if(e.event===null||!e.event.startsWith(`thread.`)){let n;try{n=JSON.parse(e.data)}catch{throw l.error(`Could not parse message into JSON:`),l.error(`From chunk:`),SyntaxError(`Error reading response: malformed server-sent event JSON.`)}if(e.event===`error`)throw new s(void 0,n?.error??n,void 0,t.headers);if(n&&n.error)throw new s(void 0,n.error,void 0,t.headers);yield a?{event:e.event,data:n}:n}else{let t;try{t=JSON.parse(e.data)}catch{throw l.error(`Could not parse message into JSON:`),l.error(`From chunk:`),SyntaxError(`Error reading response: malformed server-sent event JSON.`)}yield{event:e.event,data:t}}}e=!0}catch(e){if(r||i(e)||n.signal.aborted&&e===n.signal.reason)return;throw e}finally{e||n.abort()}}return new e(u,n,r)}static fromReadableStream(t,n,r){let a=!1;async function*s(){let e=new Se,r=t.getReader(),i=!1,a,o=()=>{a??=r.cancel(),a.catch(()=>void 0)};n.signal.addEventListener(`abort`,o,{once:!0});try{if(n.signal.aborted){o();return}for(;;){let{value:t,done:a}=await r.read();if(a){i=!0;break}if(n.signal.aborted)return;for(let r of e.decode(t)){if(n.signal.aborted)return;yield r}}if(n.signal.aborted)return;for(let t of e.flush()){if(n.signal.aborted)return;yield t}}finally{n.signal.removeEventListener(`abort`,o),i||o(),r.releaseLock()}}async function*c(){if(a)throw new o("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");a=!0;let e=!1;try{for await(let t of s())if(!e&&t){let e;try{e=JSON.parse(t)}catch(e){throw e instanceof SyntaxError?SyntaxError(`Error reading response: malformed newline-delimited JSON.`):e}yield e}e=!0}catch(e){if(n.signal.aborted||i(e))return;throw e}finally{e||n.abort()}}return new e(c,n,r)}[(Re=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let t=ze(),r=ze(),i=this.iterator(),a=e=>({next:()=>{if(e.length===0){let e=i.next();t.enqueue(e),r.enqueue(e)}return e.dequeue()}});return[new e(()=>a(t),this.controller,n(this,Re,`f`)),new e(()=>a(r),this.controller,n(this,Re,`f`))]}toReadableStream(){let e;return le({start:async()=>{e=this[Symbol.asyncIterator]()},async pull(t){try{let{value:n,done:r}=await e.next();if(r)return t.close();let i=me(JSON.stringify(n)+`
|
|
4
4
|
`);t.enqueue(i)}catch(e){t.error(e)}},async cancel(){await e.return?.()}})}};function Ve(e,t){let n=typeof e.getReader==`function`?e.getReader():void 0,r=n?{next:()=>n.read(),return:()=>n.cancel()}:de(e)[Symbol.asyncIterator](),a={value:void 0,done:!0},o=!1,s=!1,c,l,u=()=>new Promise(e=>{l=e}),d=()=>{if(s||o)return c;s=!0;try{c=Promise.resolve(r.return?.())}catch(e){c=Promise.reject(e)}return c.catch(()=>void 0),c},f=()=>{queueMicrotask(()=>{l?.(),d()})};return{iterator:{async next(){if(t.aborted)return a;let e=u().then(()=>a);try{let n=await Promise.race([r.next(),e]);return t.aborted?a:n.done?(o=!0,a):{value:n.value,done:!1}}catch(e){if(t.aborted&&(i(e)||e===t.reason))return a;throw e}finally{l=void 0}},async return(){let e=d();if(e&&!t.aborted){let n=u();try{t.aborted||await Promise.race([e,n])}finally{l=void 0}}return a},[Symbol.asyncIterator](){return this}},start(){t.addEventListener(`abort`,f,{once:!0}),t.aborted&&f()},async cleanup(e){let r;try{t.removeEventListener(`abort`,f)}catch(e){r=e}if(!o){let n=d();if(n&&!e&&!t.aborted)try{await n}catch(e){r??=e}}if(n)try{n.releaseLock()}catch(e){r??=e}if(r!==void 0&&!e&&!t.aborted)throw r}}}async function*He(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new o(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new o(`Attempted to iterate over a response with no body`);let n=new Ge,r=new Se,{signal:a}=t,s=Ve(e.body,a),c=!1;try{s.start();for await(let e of We(s.iterator)){if(a.aborted)return;for(let t of r.decode(e)){if(a.aborted)return;let e=n.decode(t);e&&(yield e)}}if(a.aborted)return;for(let e of r.flush()){if(a.aborted)return;let t=n.decode(e);t&&(yield t)}}catch(e){if(c=!0,!a.aborted||!i(e)&&e!==a.reason)throw e}finally{await s.cleanup(c)}}var Ue=3;async function*We(e){let t=new Uint8Array,n=0,r=0,i=0;for await(let a of e){if(a==null)continue;let e;if(e=a instanceof ArrayBuffer?new Uint8Array(a):typeof a==`string`?me(a):a,r+e.length>t.length){let a=r-n;if(n>=t.length/2&&a+e.length<=t.length)t.copyWithin(0,n,r);else{let i=new Uint8Array(Math.max(t.length*2,a+e.length));i.set(t.subarray(n,r)),t=i}i-=n,n=0,r=a}t.set(e,r),r+=e.length;let o;for(;(o=we(t.subarray(i,r)))!==-1;)o+=i,yield t.slice(n,o),n=o,i=n;i=Math.max(n,r-Ue)}r>n&&(yield t.slice(n,r))}var Ge=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.slice(0,-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
|
|
@@ -17,7 +17,7 @@ var a = function() {
|
|
|
17
17
|
let { crypto: e } = globalThis;
|
|
18
18
|
if (e?.randomUUID) return a = e.randomUUID.bind(e), e.randomUUID();
|
|
19
19
|
let t = /* @__PURE__ */ new Uint8Array(1), n = e ? () => e.getRandomValues(t)[0] : () => Math.random() * 255 & 255;
|
|
20
|
-
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (e) => (e ^ n() & 15 >> e / 4).toString(16));
|
|
20
|
+
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (e) => (+e ^ n() & 15 >> e / 4).toString(16));
|
|
21
21
|
};
|
|
22
22
|
//#endregion
|
|
23
23
|
//#region node_modules/openai/internal/errors.mjs
|
|
@@ -56,7 +56,7 @@ export interface DiscoverResponse {
|
|
|
56
56
|
* Always returns `queryLanguageReference` and `dateFilteringGuide` alongside
|
|
57
57
|
* the matched cubes. See `DiscoverResponse` for the rationale.
|
|
58
58
|
*/
|
|
59
|
-
export declare function handleDiscover(semanticLayer: SemanticLayerCompiler, body: DiscoverRequest): Promise<DiscoverResponse>;
|
|
59
|
+
export declare function handleDiscover(semanticLayer: SemanticLayerCompiler, securityContext: SecurityContext, body: DiscoverRequest): Promise<DiscoverResponse>;
|
|
60
60
|
/**
|
|
61
61
|
* Normalize AI-generated query fields before validation/execution.
|
|
62
62
|
* Fixes common LLM mistakes:
|
|
@@ -85,6 +85,14 @@ export interface SqlResult {
|
|
|
85
85
|
export interface ExecutionOptions {
|
|
86
86
|
/** Skip the cache lookup (but still cache the result for future requests) */
|
|
87
87
|
skipCache?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Identifies the cube definitions that produced the result, as
|
|
90
|
+
* `setId:baseGeneration.setGeneration`. Appended unconditionally to the query
|
|
91
|
+
* cache key so results can never be shared between tenants whose cube sets
|
|
92
|
+
* differ, nor survive a re-registration that changed a definition.
|
|
93
|
+
* Set by SemanticLayerCompiler; callers do not supply it.
|
|
94
|
+
*/
|
|
95
|
+
cubeSetKey?: string;
|
|
88
96
|
}
|
|
89
97
|
/**
|
|
90
98
|
* Core database interface that supports all Drizzle instances
|
|
@@ -64,6 +64,19 @@ export interface QueryContext {
|
|
|
64
64
|
* without aggregation wrappers. Set from SemanticQuery.ungrouped.
|
|
65
65
|
*/
|
|
66
66
|
ungrouped?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Cast an expression to a type, in this engine's dialect (`::decimal` on
|
|
69
|
+
* Postgres, `CAST(... AS DECIMAL)` elsewhere). Strict: unparseable input
|
|
70
|
+
* fails the query on Postgres and silently yields `0` on MySQL/SQLite.
|
|
71
|
+
*/
|
|
72
|
+
cast: (fieldExpr: AnyColumn | SQL, targetType: 'timestamp' | 'decimal' | 'integer') => SQL;
|
|
73
|
+
/**
|
|
74
|
+
* Cast an expression to a type, yielding NULL rather than failing when the
|
|
75
|
+
* input cannot be parsed. Use this over {@link QueryContext.cast} whenever
|
|
76
|
+
* the source column is free text — one dirty value should leave a row with a
|
|
77
|
+
* NULL cell, not fail the whole query.
|
|
78
|
+
*/
|
|
79
|
+
tryCast: (fieldExpr: AnyColumn | SQL, targetType: 'timestamp' | 'decimal' | 'integer') => SQL;
|
|
67
80
|
}
|
|
68
81
|
/**
|
|
69
82
|
* Multi-cube query context for cross-cube operations
|
|
@@ -147,7 +160,13 @@ export interface Dimension {
|
|
|
147
160
|
sql: AnyColumn | SQL | ((ctx: QueryContext) => AnyColumn | SQL);
|
|
148
161
|
/** Whether this is a primary key */
|
|
149
162
|
primaryKey?: boolean;
|
|
150
|
-
/**
|
|
163
|
+
/**
|
|
164
|
+
* Whether to include this dimension in generated cube metadata (`/meta`,
|
|
165
|
+
* the client field picker, AI prompts). Defaults to `true` (shown) when
|
|
166
|
+
* omitted. Setting `shown: false` hides the dimension from metadata/UI
|
|
167
|
+
* only — it remains fully usable in queries and filters, matching Cube.js
|
|
168
|
+
* semantics for `shown: false`.
|
|
169
|
+
*/
|
|
151
170
|
shown?: boolean;
|
|
152
171
|
/** Display format */
|
|
153
172
|
format?: string;
|
|
@@ -182,7 +201,13 @@ export interface Measure {
|
|
|
182
201
|
sql?: AnyColumn | SQL | ((ctx: QueryContext) => AnyColumn | SQL);
|
|
183
202
|
/** Display format */
|
|
184
203
|
format?: string;
|
|
185
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* Whether to include this measure in generated cube metadata (`/meta`,
|
|
206
|
+
* the client field picker, AI prompts). Defaults to `true` (shown) when
|
|
207
|
+
* omitted. Setting `shown: false` hides the measure from metadata/UI
|
|
208
|
+
* only — it remains fully usable in queries and filters, matching Cube.js
|
|
209
|
+
* semantics for `shown: false`.
|
|
210
|
+
*/
|
|
186
211
|
shown?: boolean;
|
|
187
212
|
/** Filters applied to this measure */
|
|
188
213
|
filters?: Array<(ctx: QueryContext) => SQL>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-cube",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.",
|
|
5
5
|
"main": "./dist/server/index.js",
|
|
6
6
|
"types": "./dist/server/index.d.ts",
|
|
@@ -413,7 +413,7 @@
|
|
|
413
413
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
414
414
|
"exceljs": "^4.4.0",
|
|
415
415
|
"express": "^5.1.0",
|
|
416
|
-
"fallow": "3.
|
|
416
|
+
"fallow": "3.21.0",
|
|
417
417
|
"fastify": "^5.6.2",
|
|
418
418
|
"globals": "^17.0.0",
|
|
419
419
|
"hono": "^4.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.activityGridChartConfig=e._;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.areaChartConfig=e.T;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.barChartConfig=e.D;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.boxPlotChartConfig=e.o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.bubbleChartConfig=e.S;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.candlestickChartConfig=e.i;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.dataTableConfig=e.v;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.funnelChartConfig=e.f;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.gaugeChartConfig=e.t;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.heatmapChartConfig=e.l;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.kpiDeltaConfig=e.h;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.kpiNumberConfig=e.g;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.kpiTextConfig=e.m;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.lineChartConfig=e.E;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.markdownConfig=e.p;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.measureProfileChartConfig=e.r;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.pieChartConfig=e.w;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.proportionBarChartConfig=e.n;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.radarChartConfig=e.x;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.radialBarChartConfig=e.b;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.retentionCombinedConfig=e.s;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.retentionHeatmapConfig=e.c;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.sankeyChartConfig=e.d;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.scatterChartConfig=e.C;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.sunburstChartConfig=e.u;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.treemapChartConfig=e.y;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-m6WgA9xu.cjs");exports.waterfallChartConfig=e.a;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./utils-BoOeig94.cjs"),t=require("./mcp-transport-B0b27YUB.cjs");var n=`x-dc-locale`;function r(e){if(!e)return;let t=(Array.isArray(e)?e[0]:e).split(`,`)[0]?.trim();if(t&&/^[A-Za-z0-9-]{2,35}$/.test(t))return t}function i(e){return r(e(n))}function a(e,t){let n=e&&typeof e==`object`?e:{},r=typeof n.locale==`string`?n.locale:void 0,i=t??r??`en-GB`;return r===i?n:{...n,locale:i}}function o(e){let t=Array.isArray(e)?[...e]:(e??``).split(`,`).map(e=>e.trim()).filter(Boolean);return t.some(e=>e.toLowerCase()===`x-dc-locale`)||t.push(`X-DC-Locale`),t}function s(e,t){return a(e,i(t))}async function c(e,t){return s(await e(),t)}function l(e){return String(e).replace(/\n|\r/g,``)}function u(t){async function n(n,r,i){let a=t.validateQuery(n);if(!a.isValid)return i.send(400,e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=n.measures?.[0]||n.dimensions?.[0];if(!o)return i.send(400,e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0],c=await t.generateSQL(s,n,r);return i.send(200,e.o(n,c))}function r(n){try{return n.send(200,e.a(t.getMetadata()))}catch(t){return console.error(`Metadata error:`,t),n.send(500,e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500))}}async function i(t,r){try{let e=await t.getBody();return await n(e?.query||e,await c(r,e=>t.getHeader(e)),t)}catch(n){return console.error(`SQL generation error:`,l(n)),t.send(500,e.i(n instanceof Error?n.message:`SQL generation failed`,500))}}async function a(t,r){try{let i=t.getQueryParam(`query`);if(!i)return t.send(400,e.i(`Query parameter is required`,400));let a;try{a=JSON.parse(i)}catch{return t.send(400,e.i(`Invalid JSON in query parameter`,400))}let o=await c(r,e=>t.getHeader(e));return await n(a,o,t)}catch(n){return console.error(`SQL generation error:`,l(n)),t.send(500,e.i(n instanceof Error?n.message:`SQL generation failed`,500))}}async function o(n,r){try{let i=await n.getBody(),a=i?.query||i,o=await c(r,e=>n.getHeader(e)),s=await e.u(a,o,t);return n.send(200,s)}catch(e){return console.error(`Dry-run error:`,e),n.send(400,{error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}async function s(n,r){try{let i=n.getQueryParam(`query`);if(!i)return n.send(400,{error:`Query parameter is required`,valid:!1});let a=JSON.parse(i),o=await c(r,e=>n.getHeader(e)),s=await e.u(a,o,t);return n.send(200,s)}catch(e){return console.error(`Dry-run error:`,e),n.send(400,{error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}async function u(n,r){try{let i=(await n.getBody())?.queries;if(!i||!Array.isArray(i))return n.send(400,e.i(`Request body must contain a "queries" array`,400));if(i.length===0)return n.send(400,e.i(`Queries array cannot be empty`,400));let a=await c(r,e=>n.getHeader(e)),o=n.getHeader(`x-cache-control`)===`no-cache`,s=await e.l(i,a,t,{skipCache:o});return n.send(200,s)}catch(t){return console.error(`Batch execution error:`,t),n.send(500,e.i(t instanceof Error?t.message:`Batch execution failed`,500))}}async function d(e,n){try{let r=await e.getBody(),i=r?.query||r,a=r?.options||{},o=await c(n,t=>e.getHeader(t)),s=t.validateQuery(i);if(!s.isValid)return e.send(400,{error:`Query validation failed: ${s.errors.join(`, `)}`});let l=await t.explainQuery(i,o,a);return e.send(200,l)}catch(t){return console.error(`Explain error:`,t),e.send(500,{error:t instanceof Error?t.message:`Explain query failed`})}}return{handleMetaGet:r,handleSqlGet:a,handleSqlPost:i,handleDryRunGet:s,handleDryRunPost:o,handleBatchPost:u,handleExplainPost:d}}function d(e,n){let r=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`;return t.i(n??null,r,a,i)}function f(e,n){let r=!!n.app,i=typeof n.app==`object`?n.app:void 0,a;function o(){return a||={resources:t.o(e,n.resources),prompts:t.b(n.prompts),instructions:t.y(n.instructions)},a}async function s(a,s){if(n.resourceMetadataUrl&&!t.u(a.getHeader(`authorization`)))return a.setHeader(`WWW-Authenticate`,t.c(n.resourceMetadataUrl)),a.send(401,{error:`Bearer token required`});let u=t.C(a.getHeader(`origin`),t.g(n));if(!u.valid)return a.send(403,t.i(null,-32600,u.reason));let f=a.getHeader(`accept`);if(!t.S(f))return a.send(400,t.i(null,-32600,`Accept header must include both application/json and text/event-stream`));let p=t.h({"mcp-protocol-version":a.getHeader(`mcp-protocol-version`)});if(!p.ok)return a.send(426,{error:`Unsupported MCP protocol version`,supported:p.supported});let m=t._(await a.getBody());if(!m)return a.send(400,t.i(null,-32600,`Invalid JSON-RPC 2.0 request`));let h=t.w(f),g=m.method===`initialize`,{resources:_,prompts:v,instructions:y}=o();try{let o=await t.l(m.method,m.params,{semanticLayer:e,extractSecurityContext:()=>c(s,e=>a.getHeader(e)),rawRequest:void 0,rawResponse:void 0,negotiatedProtocol:p.negotiated,resources:_,prompts:v,instructions:y,appEnabled:r,appConfig:i,serverName:n.serverName});if(t.m(m))return a.sendEmpty(202);let l=g&&o&&typeof o==`object`&&`sessionId`in o?o.sessionId:void 0;l&&a.setHeader(t.r,l);let u=t.a(m.id??null,o);if(h){let e=t.v();return a.sendSse(200,`id: ${e}\n\n`+t.x(u,e))}return a.send(200,u)}catch(e){if(t.m(m))return console.error(`MCP notification processing error:`,l(e)),a.sendEmpty(202);console.error(`MCP RPC error:`,l(e));let n=d(e,m.id);if(h){let e=t.v();return a.sendSse(200,`id: ${e}\n\n`+t.x(n,e))}return a.send(200,n)}}return{handleMcpPost:s}}function p(t){let{semanticLayer:n,onError:r,mcp:i={}}=t,a=u(n),{handleMcpPost:o}=f(n,i);function s(t,n){return r(t),n.send(500,e.i(t instanceof Error?t.message:`Query execution failed`,500))}async function l(t,r,i){let a=await c(i,e=>r.getHeader(e)),o=n.validateQuery(t);if(!o.isValid)return r.send(400,e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=r.getHeader(`x-cache-control`)===`no-cache`,l=await n.executeMultiCubeQuery(t,a,{skipCache:s});return r.send(200,e.r(t,l,n))}async function d(e,t){try{let n=await e.getBody();return await l(n?.query||n,e,t)}catch(t){return s(t,e)}}async function p(t,n){try{let r=t.getQueryParam(`query`);if(!r)return t.send(400,e.i(`Query parameter is required`,400));let i;try{i=JSON.parse(r)}catch{return t.send(400,e.i(`Invalid JSON in query parameter`,400))}return await l(i,t,n)}catch(e){return s(e,t)}}return{handleLoadGet:p,handleLoadPost:d,handleMcpPost:o,...a}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return p}});
|