drizzle-cube 0.10.1 → 0.11.1

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.
Files changed (319) hide show
  1. package/dist/adapters/ActivityGridChart.config-XMtoteb6.js +2 -0
  2. package/dist/adapters/ActivityGridChart.config-h1AXPvn0.cjs +1 -0
  3. package/dist/adapters/AreaChart.config-DYf9wufo.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-We6b53aT.js +2 -0
  5. package/dist/adapters/BarChart.config-4SX44IYv.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CwBnyptL.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-BzNe-FlW.cjs +1 -0
  8. package/dist/adapters/BoxPlotChart.config-mfAHqmcp.js +2 -0
  9. package/dist/adapters/BubbleChart.config-CBT5jMdc.cjs +1 -0
  10. package/dist/adapters/BubbleChart.config-DxG_Umal.js +2 -0
  11. package/dist/adapters/CandlestickChart.config-Cqw3XP1h.js +2 -0
  12. package/dist/adapters/CandlestickChart.config-DPSSlzUD.cjs +1 -0
  13. package/dist/adapters/DataTable.config-DS1bvaDu.js +2 -0
  14. package/dist/adapters/DataTable.config-D_NsMeyz.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-BApWn6QV.cjs +1 -0
  16. package/dist/adapters/DotStripChart.config-Bdk5-YfB.js +2 -0
  17. package/dist/adapters/FunnelChart.config-BT5up_Bg.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-ISZiz9fn.js +2 -0
  19. package/dist/adapters/GaugeChart.config-Biaq1cKc.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-BjGfB84t.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-Bmca8KiH.cjs +1 -0
  22. package/dist/adapters/HeatMapChart.config-uWvR0B-N.js +2 -0
  23. package/dist/adapters/KpiDelta.config-CJeDdj_1.js +2 -0
  24. package/dist/adapters/KpiDelta.config-CKr9pAxL.cjs +1 -0
  25. package/dist/adapters/KpiNumber.config-6YLEF2fy.cjs +1 -0
  26. package/dist/adapters/KpiNumber.config-C00M46GA.js +2 -0
  27. package/dist/adapters/KpiText.config-C8Av_D2W.cjs +1 -0
  28. package/dist/adapters/KpiText.config-bKTHob0C.js +2 -0
  29. package/dist/adapters/LineChart.config-DH68HT_B.js +2 -0
  30. package/dist/adapters/LineChart.config-DPq7GvL9.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-CaaJPO3c.js +2 -0
  32. package/dist/adapters/MarkdownChart.config-ca_UyhWJ.cjs +1 -0
  33. package/dist/adapters/MeasureProfileChart.config-C1Il0IqL.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-DMOnkmb6.js +2 -0
  35. package/dist/adapters/PieChart.config-Bg-8cxWK.js +2 -0
  36. package/dist/adapters/PieChart.config-joJcF--K.cjs +1 -0
  37. package/dist/adapters/ProportionBarChart.config-B2sltKsI.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-BlCedy1v.js +2 -0
  39. package/dist/adapters/RadarChart.config-DD1pX6FZ.js +2 -0
  40. package/dist/adapters/RadarChart.config-DVCCLSVw.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config--VIE2jMM.js +2 -0
  42. package/dist/adapters/RadialBarChart.config-BZwyWhTg.cjs +1 -0
  43. package/dist/adapters/RecordsTable.config-CTBQc-2r.js +2 -0
  44. package/dist/adapters/RecordsTable.config-DPdO0DL5.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-PGVxnkRL.js +2 -0
  46. package/dist/adapters/RetentionCombinedChart.config-mX5PMh82.cjs +1 -0
  47. package/dist/adapters/RetentionHeatmap.config-Co-JMzBm.js +2 -0
  48. package/dist/adapters/RetentionHeatmap.config-Cub3-ksy.cjs +1 -0
  49. package/dist/adapters/SankeyChart.config-BkIyUcAE.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-DGTnRmYg.js +2 -0
  51. package/dist/adapters/ScatterChart.config-CdZrBorg.js +2 -0
  52. package/dist/adapters/ScatterChart.config-CwN9niUL.cjs +1 -0
  53. package/dist/adapters/SunburstChart.config-D0ZkRSJv.cjs +1 -0
  54. package/dist/adapters/SunburstChart.config-RF3uu5Sa.js +2 -0
  55. package/dist/adapters/TreeMapChart.config-B2Yn_V7p.cjs +1 -0
  56. package/dist/adapters/TreeMapChart.config-diJtcs4D.js +2 -0
  57. package/dist/adapters/WaterfallChart.config-B10PxftT.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-BImlkLmR.js +2 -0
  59. package/dist/adapters/chartConfigHelpers-BhME7ow_.cjs +1 -0
  60. package/dist/adapters/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
  61. package/dist/adapters/{compiler-Dw5tYox7.cjs → compiler-B-yljK02.cjs} +6 -6
  62. package/dist/adapters/{compiler-C8fOs43d.js → compiler-BhityGUO.js} +197 -186
  63. package/dist/adapters/core/index.cjs +1 -1
  64. package/dist/adapters/core/index.js +1 -1
  65. package/dist/adapters/{core-BP6GiYzO.cjs → core-CQOrzBNh.cjs} +1 -1
  66. package/dist/adapters/{core-z6vXJ8nF.js → core-xZE0miIu.js} +2 -2
  67. package/dist/adapters/express/index.cjs +1 -1
  68. package/dist/adapters/express/index.js +5 -5
  69. package/dist/adapters/fastify/index.cjs +1 -1
  70. package/dist/adapters/fastify/index.js +5 -5
  71. package/dist/adapters/{handler-CI3Rt-Zt.js → handler-ByeQ0-1r.js} +237 -234
  72. package/dist/adapters/handler-DSNmfv1R.cjs +16 -0
  73. package/dist/adapters/hono/index.cjs +1 -1
  74. package/dist/adapters/hono/index.js +4 -4
  75. package/dist/adapters/mcp-app-html-CNp0VqS_.cjs +1 -0
  76. package/dist/adapters/mcp-app-html-CvWoYMO3.js +5 -0
  77. package/dist/adapters/mcp-app-html.cjs +1 -1
  78. package/dist/adapters/mcp-app-html.js +1 -1
  79. package/dist/adapters/mcp-tools.cjs +1 -1
  80. package/dist/adapters/mcp-tools.js +3 -3
  81. package/dist/adapters/{mcp-transport-DpS_e0gL.js → mcp-transport-Cy6n4uj1.js} +1 -1
  82. package/dist/adapters/{mcp-transport-Bc7-KSG_.cjs → mcp-transport-DnLP5FPL.cjs} +1 -1
  83. package/dist/adapters/nextjs/index.cjs +1 -1
  84. package/dist/adapters/nextjs/index.js +5 -5
  85. package/dist/adapters/{openai-7064EJ1j.cjs → openai-BQl0yJCS.cjs} +1 -1
  86. package/dist/adapters/{openai-CnUBYFyY.js → openai-C4HrjyJj.js} +1 -1
  87. package/dist/adapters/{openai-DpGdZL3m.js → openai-D3Nt6Bj7.js} +1 -1
  88. package/dist/adapters/{openai-B0mByiYQ.cjs → openai-z1ai-G4Q.cjs} +1 -1
  89. package/dist/adapters/{utils-CN_bxSiq.js → utils-BaxFceDq.js} +6 -1
  90. package/dist/adapters/{utils-CvC1czqb.cjs → utils-a2p2B6x8.cjs} +2 -2
  91. package/dist/adapters/utils.cjs +1 -1
  92. package/dist/adapters/utils.js +1 -1
  93. package/dist/cjs/client/charts/chartConfigHelpers.d.ts +5 -0
  94. package/dist/cjs/client/components/AnalysisBuilder/types.d.ts +4 -0
  95. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +6 -1
  96. package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
  97. package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
  98. package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
  99. package/dist/cjs/client/hooks/useAnalysisQuery.d.ts +6 -1
  100. package/dist/cjs/client/index.d.ts +2 -0
  101. package/dist/cjs/client/types.d.ts +5 -0
  102. package/dist/cjs/client/utils/gapFilling.d.ts +52 -0
  103. package/dist/cjs/client/utils/index.d.ts +1 -0
  104. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  105. package/dist/cjs/server/execution/result-post-processor.d.ts +4 -2
  106. package/dist/cjs/server/executor.d.ts +2 -0
  107. package/dist/cjs/server/gap-filler.d.ts +8 -43
  108. package/dist/cjs/server/types/core.d.ts +2 -0
  109. package/dist/cjs/server/types/cube.d.ts +12 -0
  110. package/dist/cjs/server/types/metadata.d.ts +5 -0
  111. package/dist/cjs/server/types/query.d.ts +2 -1
  112. package/dist/client/charts/chartConfigHelpers.d.ts +5 -0
  113. package/dist/client/charts.js +12 -12
  114. package/dist/client/chunks/{DashboardEditModal-5ZSP--FQ.js → DashboardEditModal-DifODH4h.js} +2360 -2548
  115. package/dist/client/chunks/DashboardEditModal-DifODH4h.js.map +1 -0
  116. package/dist/client/chunks/{DotStripChart-DTukhwG-.js → DotStripChart-B9IVCFPO.js} +3 -3
  117. package/dist/client/chunks/{DotStripChart-DTukhwG-.js.map → DotStripChart-B9IVCFPO.js.map} +1 -1
  118. package/dist/client/chunks/{ProportionBarChart-CPZ2cHxH.js → ProportionBarChart-DieF9AzP.js} +3 -3
  119. package/dist/client/chunks/{ProportionBarChart-CPZ2cHxH.js.map → ProportionBarChart-DieF9AzP.js.map} +1 -1
  120. package/dist/client/chunks/{RecordsTable-BC5l67Dc.js → RecordsTable-Mo3ai5_M.js} +4 -4
  121. package/dist/client/chunks/{RecordsTable-BC5l67Dc.js.map → RecordsTable-Mo3ai5_M.js.map} +1 -1
  122. package/dist/client/chunks/{RetentionCombinedChart-aj5xblfu.js → RetentionCombinedChart-Bie4ADyA.js} +3 -3
  123. package/dist/client/chunks/{RetentionCombinedChart-aj5xblfu.js.map → RetentionCombinedChart-Bie4ADyA.js.map} +1 -1
  124. package/dist/client/chunks/{RetentionHeatmap-CKckuEMF.js → RetentionHeatmap-qstIAx5B.js} +2 -2
  125. package/dist/client/chunks/{RetentionHeatmap-CKckuEMF.js.map → RetentionHeatmap-qstIAx5B.js.map} +1 -1
  126. package/dist/client/chunks/{analysis-builder-Db4umQtd.js → analysis-builder-D78aDJoL.js} +41 -41
  127. package/dist/client/chunks/analysis-builder-D78aDJoL.js.map +1 -0
  128. package/dist/client/chunks/{analysis-builder-shared-BEvvX6ln.js → analysis-builder-shared-CsIs4-Xf.js} +538 -523
  129. package/dist/client/chunks/analysis-builder-shared-CsIs4-Xf.js.map +1 -0
  130. package/dist/client/chunks/{chart-activity-grid-Bbc58UJD.js → chart-activity-grid-Ly_-2B-f.js} +7 -2
  131. package/dist/client/chunks/chart-activity-grid-Ly_-2B-f.js.map +1 -0
  132. package/dist/client/chunks/{chart-area-9uCXIvMN.js → chart-area-D3l-71Wy.js} +2 -2
  133. package/dist/client/chunks/{chart-area-9uCXIvMN.js.map → chart-area-D3l-71Wy.js.map} +1 -1
  134. package/dist/client/chunks/{chart-bar-C5a1T9Ce.js → chart-bar-BaTyQOqs.js} +3 -3
  135. package/dist/client/chunks/{chart-bar-C5a1T9Ce.js.map → chart-bar-BaTyQOqs.js.map} +1 -1
  136. package/dist/client/chunks/{chart-box-plot-BbBrZsaJ.js → chart-box-plot-Cem6PHjz.js} +2 -2
  137. package/dist/client/chunks/{chart-box-plot-BbBrZsaJ.js.map → chart-box-plot-Cem6PHjz.js.map} +1 -1
  138. package/dist/client/chunks/{chart-bubble-dt5ESb7m.js → chart-bubble-DFlfqCDG.js} +2 -2
  139. package/dist/client/chunks/{chart-bubble-dt5ESb7m.js.map → chart-bubble-DFlfqCDG.js.map} +1 -1
  140. package/dist/client/chunks/{chart-candlestick-2A2J_NsK.js → chart-candlestick-BkAFBXtZ.js} +2 -2
  141. package/dist/client/chunks/{chart-candlestick-2A2J_NsK.js.map → chart-candlestick-BkAFBXtZ.js.map} +1 -1
  142. package/dist/client/chunks/{chart-config-area-DsrZCIwF.js → chart-config-area-BnsRQ-MY.js} +35 -14
  143. package/dist/client/chunks/chart-config-area-BnsRQ-MY.js.map +1 -0
  144. package/dist/client/chunks/{chart-config-bar-BixSs43E.js → chart-config-bar-G2HJJBVV.js} +8 -7
  145. package/dist/client/chunks/chart-config-bar-G2HJJBVV.js.map +1 -0
  146. package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js → chart-config-kpi-delta-BIAq1Ftg.js} +2 -2
  147. package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js.map → chart-config-kpi-delta-BIAq1Ftg.js.map} +1 -1
  148. package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js → chart-config-kpi-number-Dgc4gIYu.js} +2 -2
  149. package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js.map → chart-config-kpi-number-Dgc4gIYu.js.map} +1 -1
  150. package/dist/client/chunks/{chart-config-line-CBF9Px9b.js → chart-config-line-DLkRs1Zr.js} +9 -8
  151. package/dist/client/chunks/chart-config-line-DLkRs1Zr.js.map +1 -0
  152. package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js → chart-config-pie-XrHim0C8.js} +2 -2
  153. package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js.map → chart-config-pie-XrHim0C8.js.map} +1 -1
  154. package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js → chart-config-radar-xNS6Juqc.js} +2 -2
  155. package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js.map → chart-config-radar-xNS6Juqc.js.map} +1 -1
  156. package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js → chart-config-radial-bar-ChUChsEe.js} +2 -2
  157. package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js.map → chart-config-radial-bar-ChUChsEe.js.map} +1 -1
  158. package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js → chart-config-tree-map-CnrJ7OC1.js} +2 -2
  159. package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js.map → chart-config-tree-map-CnrJ7OC1.js.map} +1 -1
  160. package/dist/client/chunks/{chart-data-table-zSjYEy0r.js → chart-data-table-Cxd0cdAl.js} +36 -36
  161. package/dist/client/chunks/{chart-data-table-zSjYEy0r.js.map → chart-data-table-Cxd0cdAl.js.map} +1 -1
  162. package/dist/client/chunks/{chart-funnel-CuOSCsbt.js → chart-funnel-71Kn4eeF.js} +2 -2
  163. package/dist/client/chunks/{chart-funnel-CuOSCsbt.js.map → chart-funnel-71Kn4eeF.js.map} +1 -1
  164. package/dist/client/chunks/{chart-gauge-DxKeqCCD.js → chart-gauge-BddS_9oS.js} +3 -3
  165. package/dist/client/chunks/{chart-gauge-DxKeqCCD.js.map → chart-gauge-BddS_9oS.js.map} +1 -1
  166. package/dist/client/chunks/{chart-heat-map-C1dvW-ov.js → chart-heat-map-BQIsrn8m.js} +3 -3
  167. package/dist/client/chunks/{chart-heat-map-C1dvW-ov.js.map → chart-heat-map-BQIsrn8m.js.map} +1 -1
  168. package/dist/client/chunks/{chart-kpi-delta-CgehGc9d.js → chart-kpi-delta-DndbqdZT.js} +3 -3
  169. package/dist/client/chunks/{chart-kpi-delta-CgehGc9d.js.map → chart-kpi-delta-DndbqdZT.js.map} +1 -1
  170. package/dist/client/chunks/{chart-kpi-number-C31-6A6m.js → chart-kpi-number-DAbfoHMt.js} +5 -5
  171. package/dist/client/chunks/{chart-kpi-number-C31-6A6m.js.map → chart-kpi-number-DAbfoHMt.js.map} +1 -1
  172. package/dist/client/chunks/{chart-kpi-text-D2ydQIEn.js → chart-kpi-text-D8oQgpxL.js} +3 -3
  173. package/dist/client/chunks/{chart-kpi-text-D2ydQIEn.js.map → chart-kpi-text-D8oQgpxL.js.map} +1 -1
  174. package/dist/client/chunks/{chart-line-CjW9Yo03.js → chart-line-BNqjUowg.js} +3 -3
  175. package/dist/client/chunks/{chart-line-CjW9Yo03.js.map → chart-line-BNqjUowg.js.map} +1 -1
  176. package/dist/client/chunks/{chart-markdown-Cgs62had.js → chart-markdown-DtgpU3xd.js} +2 -2
  177. package/dist/client/chunks/{chart-markdown-Cgs62had.js.map → chart-markdown-DtgpU3xd.js.map} +1 -1
  178. package/dist/client/chunks/{chart-measure-profile-Cg39gYjR.js → chart-measure-profile-D5nZMWlI.js} +3 -3
  179. package/dist/client/chunks/{chart-measure-profile-Cg39gYjR.js.map → chart-measure-profile-D5nZMWlI.js.map} +1 -1
  180. package/dist/client/chunks/{chart-pie-BTb5nKd7.js → chart-pie-D8r9HCZ4.js} +3 -3
  181. package/dist/client/chunks/{chart-pie-BTb5nKd7.js.map → chart-pie-D8r9HCZ4.js.map} +1 -1
  182. package/dist/client/chunks/{chart-radar-8384sPlX.js → chart-radar-R4PuCIWp.js} +3 -3
  183. package/dist/client/chunks/{chart-radar-8384sPlX.js.map → chart-radar-R4PuCIWp.js.map} +1 -1
  184. package/dist/client/chunks/{chart-radial-bar-CuBmmOTU.js → chart-radial-bar-hmrSFa6O.js} +3 -3
  185. package/dist/client/chunks/{chart-radial-bar-CuBmmOTU.js.map → chart-radial-bar-hmrSFa6O.js.map} +1 -1
  186. package/dist/client/chunks/{chart-sankey-CoIuG7Nu.js → chart-sankey-CFXPybny.js} +2 -2
  187. package/dist/client/chunks/{chart-sankey-CoIuG7Nu.js.map → chart-sankey-CFXPybny.js.map} +1 -1
  188. package/dist/client/chunks/{chart-scatter-Bdj95OeV.js → chart-scatter-CH82md0L.js} +3 -3
  189. package/dist/client/chunks/{chart-scatter-Bdj95OeV.js.map → chart-scatter-CH82md0L.js.map} +1 -1
  190. package/dist/client/chunks/{chart-sunburst-CuG8520_.js → chart-sunburst-CTj95eEC.js} +3 -3
  191. package/dist/client/chunks/{chart-sunburst-CuG8520_.js.map → chart-sunburst-CTj95eEC.js.map} +1 -1
  192. package/dist/client/chunks/{chart-tree-map-CtJADX87.js → chart-tree-map-CmysE4bF.js} +3 -3
  193. package/dist/client/chunks/{chart-tree-map-CtJADX87.js.map → chart-tree-map-CmysE4bF.js.map} +1 -1
  194. package/dist/client/chunks/{chart-waterfall-D430fO48.js → chart-waterfall-Bv1mPvlB.js} +3 -3
  195. package/dist/client/chunks/{chart-waterfall-D430fO48.js.map → chart-waterfall-Bv1mPvlB.js.map} +1 -1
  196. package/dist/client/chunks/{charts-core-BSmlKmf0.js → charts-core-BdEQgbqN.js} +2 -2
  197. package/dist/client/chunks/{charts-core-BSmlKmf0.js.map → charts-core-BdEQgbqN.js.map} +1 -1
  198. package/dist/client/chunks/charts-loader-DoLQqFXg.js +87 -0
  199. package/dist/client/chunks/{charts-loader-Bz9yHkW1.js.map → charts-loader-DoLQqFXg.js.map} +1 -1
  200. package/dist/client/chunks/gapFilling-DKBRHcQL.js +391 -0
  201. package/dist/client/chunks/gapFilling-DKBRHcQL.js.map +1 -0
  202. package/dist/client/chunks/{nl-NL-BrqrWoAj.js → nl-NL-DVZXf8U7.js} +6 -1
  203. package/dist/client/chunks/nl-NL-DVZXf8U7.js.map +1 -0
  204. package/dist/client/chunks/{schema-visualization-D2NvjQny.js → schema-visualization-MlRrcJQH.js} +3 -3
  205. package/dist/client/chunks/{schema-visualization-D2NvjQny.js.map → schema-visualization-MlRrcJQH.js.map} +1 -1
  206. package/dist/client/chunks/{useDirtyStateTracking-DL_AnCWZ.js → useDirtyStateTracking-DUyYwuN_.js} +318 -293
  207. package/dist/client/chunks/useDirtyStateTracking-DUyYwuN_.js.map +1 -0
  208. package/dist/client/chunks/{useExplainAI-CdPWtj7E.js → useExplainAI-BtoS3tb5.js} +4 -4
  209. package/dist/client/chunks/{useExplainAI-CdPWtj7E.js.map → useExplainAI-BtoS3tb5.js.map} +1 -1
  210. package/dist/client/chunks/utils-CToHkuhU.js.map +1 -1
  211. package/dist/client/chunks/{vendor-Bpaolt6h.js → vendor-BfBpNmMa.js} +2 -2
  212. package/dist/client/chunks/{vendor-Bpaolt6h.js.map → vendor-BfBpNmMa.js.map} +1 -1
  213. package/dist/client/components/AnalysisBuilder/types.d.ts +4 -0
  214. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +6 -1
  215. package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
  216. package/dist/client/components.js +2 -2
  217. package/dist/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
  218. package/dist/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
  219. package/dist/client/hooks/useAnalysisQuery.d.ts +6 -1
  220. package/dist/client/hooks.js +3 -3
  221. package/dist/client/icons.js +1 -1
  222. package/dist/client/index.d.ts +2 -0
  223. package/dist/client/index.js +193 -192
  224. package/dist/client/index.js.map +1 -1
  225. package/dist/client/providers.js +1 -1
  226. package/dist/client/schema.js +1 -1
  227. package/dist/client/types.d.ts +5 -0
  228. package/dist/client/utils/gapFilling.d.ts +52 -0
  229. package/dist/client/utils/index.d.ts +1 -0
  230. package/dist/client/utils.js +9 -8
  231. package/dist/client/utils.js.map +1 -1
  232. package/dist/client-bundle-stats.html +1 -1
  233. package/dist/mcp-app/mcp-app.html +101 -101
  234. package/dist/server/ai/query-schema.d.ts +1 -1
  235. package/dist/server/chartConfigHelpers-BhME7ow_.cjs +1 -0
  236. package/dist/server/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
  237. package/dist/server/execution/result-post-processor.d.ts +4 -2
  238. package/dist/server/executor.d.ts +2 -0
  239. package/dist/server/gap-filler.d.ts +8 -43
  240. package/dist/server/index.cjs +34 -34
  241. package/dist/server/index.js +2049 -2030
  242. package/dist/server/types/core.d.ts +2 -0
  243. package/dist/server/types/cube.d.ts +12 -0
  244. package/dist/server/types/metadata.d.ts +5 -0
  245. package/dist/server/types/query.d.ts +2 -1
  246. package/package.json +1 -1
  247. package/dist/adapters/ActivityGridChart.config-BpGv0FYq.js +0 -2
  248. package/dist/adapters/ActivityGridChart.config-DWs9dRl7.cjs +0 -1
  249. package/dist/adapters/AreaChart.config-Cn8nAQqj.cjs +0 -1
  250. package/dist/adapters/AreaChart.config-NDMkAi9w.js +0 -2
  251. package/dist/adapters/BarChart.config-CuGCupRX.cjs +0 -1
  252. package/dist/adapters/BarChart.config-D4Ct_ZuS.js +0 -2
  253. package/dist/adapters/BoxPlotChart.config-BEHZDgrz.js +0 -2
  254. package/dist/adapters/BoxPlotChart.config-DnC3xk7q.cjs +0 -1
  255. package/dist/adapters/BubbleChart.config-D0ouKOKS.cjs +0 -1
  256. package/dist/adapters/BubbleChart.config-Du8aEfdQ.js +0 -2
  257. package/dist/adapters/CandlestickChart.config-B0B6dKYG.cjs +0 -1
  258. package/dist/adapters/CandlestickChart.config-DBilZaFc.js +0 -2
  259. package/dist/adapters/DataTable.config-BXalzUPO.cjs +0 -1
  260. package/dist/adapters/DataTable.config-CF8BzQHu.js +0 -2
  261. package/dist/adapters/DotStripChart.config-0ggseDij.cjs +0 -1
  262. package/dist/adapters/DotStripChart.config-CfHh0XSW.js +0 -2
  263. package/dist/adapters/FunnelChart.config-AcSpen_Q.js +0 -2
  264. package/dist/adapters/FunnelChart.config-D6k89qDc.cjs +0 -1
  265. package/dist/adapters/GaugeChart.config-B5BcrEvW.cjs +0 -1
  266. package/dist/adapters/GaugeChart.config-BChbha74.js +0 -2
  267. package/dist/adapters/HeatMapChart.config-BgkP8kiW.js +0 -2
  268. package/dist/adapters/HeatMapChart.config-Crq7vBwj.cjs +0 -1
  269. package/dist/adapters/KpiDelta.config-Cqu1WOkV.js +0 -2
  270. package/dist/adapters/KpiDelta.config-edWLG1bM.cjs +0 -1
  271. package/dist/adapters/KpiNumber.config-BLkE67us.cjs +0 -1
  272. package/dist/adapters/KpiNumber.config-DNsH72Rs.js +0 -2
  273. package/dist/adapters/KpiText.config-CAnLZYht.cjs +0 -1
  274. package/dist/adapters/KpiText.config-CQGd10Hj.js +0 -2
  275. package/dist/adapters/LineChart.config-C7l_xff-.js +0 -2
  276. package/dist/adapters/LineChart.config-DOxwtnfG.cjs +0 -1
  277. package/dist/adapters/MarkdownChart.config-BV5j1oJl.cjs +0 -1
  278. package/dist/adapters/MarkdownChart.config-CBkJAEpW.js +0 -2
  279. package/dist/adapters/MeasureProfileChart.config-CyyFz-x_.cjs +0 -1
  280. package/dist/adapters/MeasureProfileChart.config-VIvr7lq6.js +0 -2
  281. package/dist/adapters/PieChart.config-BP8OlSJ4.js +0 -2
  282. package/dist/adapters/PieChart.config-BaMxIlBa.cjs +0 -1
  283. package/dist/adapters/ProportionBarChart.config-CtZaP8Xn.js +0 -2
  284. package/dist/adapters/ProportionBarChart.config-DAyEQ8Pn.cjs +0 -1
  285. package/dist/adapters/RadarChart.config-CG07QZUT.cjs +0 -1
  286. package/dist/adapters/RadarChart.config-DJJuD-Tb.js +0 -2
  287. package/dist/adapters/RadialBarChart.config-BNgzWkot.cjs +0 -1
  288. package/dist/adapters/RadialBarChart.config-DVM_jg9B.js +0 -2
  289. package/dist/adapters/RecordsTable.config-BEQmKQ-S.cjs +0 -1
  290. package/dist/adapters/RecordsTable.config-d4s8HV9m.js +0 -2
  291. package/dist/adapters/RetentionCombinedChart.config-DJ4N-ffd.cjs +0 -1
  292. package/dist/adapters/RetentionCombinedChart.config-DV1h3rW2.js +0 -2
  293. package/dist/adapters/RetentionHeatmap.config-CIJDenRg.cjs +0 -1
  294. package/dist/adapters/RetentionHeatmap.config-P3VVn3QJ.js +0 -2
  295. package/dist/adapters/SankeyChart.config-CQ89DYf7.cjs +0 -1
  296. package/dist/adapters/SankeyChart.config-CfMmdmXJ.js +0 -2
  297. package/dist/adapters/ScatterChart.config-C4zrFpF-.cjs +0 -1
  298. package/dist/adapters/ScatterChart.config-DaJ3LVWH.js +0 -2
  299. package/dist/adapters/SunburstChart.config-1ZRhfGr0.cjs +0 -1
  300. package/dist/adapters/SunburstChart.config-DHgrSIkQ.js +0 -2
  301. package/dist/adapters/TreeMapChart.config-Cy3sAsJP.js +0 -2
  302. package/dist/adapters/TreeMapChart.config-D365WWEK.cjs +0 -1
  303. package/dist/adapters/WaterfallChart.config-DYEf1vQT.js +0 -2
  304. package/dist/adapters/WaterfallChart.config-s8pICbm8.cjs +0 -1
  305. package/dist/adapters/chartConfigHelpers-BZMu_1EP.cjs +0 -1
  306. package/dist/adapters/handler-B78akmC_.cjs +0 -16
  307. package/dist/adapters/mcp-app-html-C1fEW5oE.js +0 -5
  308. package/dist/adapters/mcp-app-html-CGk4ubE0.cjs +0 -1
  309. package/dist/client/chunks/DashboardEditModal-5ZSP--FQ.js.map +0 -1
  310. package/dist/client/chunks/analysis-builder-Db4umQtd.js.map +0 -1
  311. package/dist/client/chunks/analysis-builder-shared-BEvvX6ln.js.map +0 -1
  312. package/dist/client/chunks/chart-activity-grid-Bbc58UJD.js.map +0 -1
  313. package/dist/client/chunks/chart-config-area-DsrZCIwF.js.map +0 -1
  314. package/dist/client/chunks/chart-config-bar-BixSs43E.js.map +0 -1
  315. package/dist/client/chunks/chart-config-line-CBF9Px9b.js.map +0 -1
  316. package/dist/client/chunks/charts-loader-Bz9yHkW1.js +0 -87
  317. package/dist/client/chunks/nl-NL-BrqrWoAj.js.map +0 -1
  318. package/dist/client/chunks/useDirtyStateTracking-DL_AnCWZ.js.map +0 -1
  319. package/dist/server/chartConfigHelpers-BZMu_1EP.cjs +0 -1
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-CvC1czqb.cjs");exports.buildTransformedQuery=e.t,exports.calculateQueryComplexity=e.n,exports.formatCubeResponse=e.r,exports.formatErrorResponse=e.i,exports.formatMetaResponse=e.a,exports.formatSqlResponse=e.o,exports.formatSqlString=e.x,exports.generateRequestId=e.s,exports.getDatabaseType=e.c,exports.handleBatchRequest=e.l,exports.handleDiscover=e.p,exports.handleDryRun=e.u,exports.handleLoad=e.m,exports.handleSuggest=e.d,exports.handleValidate=e.f,exports.normalizeQueryFields=e.h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-a2p2B6x8.cjs");exports.buildTransformedQuery=e.t,exports.calculateQueryComplexity=e.n,exports.formatCubeResponse=e.r,exports.formatErrorResponse=e.i,exports.formatMetaResponse=e.a,exports.formatSqlResponse=e.o,exports.formatSqlString=e.x,exports.generateRequestId=e.s,exports.getDatabaseType=e.c,exports.handleBatchRequest=e.l,exports.handleDiscover=e.p,exports.handleDryRun=e.u,exports.handleLoad=e.m,exports.handleSuggest=e.d,exports.handleValidate=e.f,exports.normalizeQueryFields=e.h;
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m, x as h } from "./utils-CN_bxSiq.js";
1
+ import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m, x as h } from "./utils-BaxFceDq.js";
2
2
  export { p as buildTransformedQuery, c as calculateQueryComplexity, d as formatCubeResponse, a as formatErrorResponse, e as formatMetaResponse, l as formatSqlResponse, h as formatSqlString, f as generateRequestId, t as getDatabaseType, o as handleBatchRequest, u as handleDiscover, m as handleDryRun, s as handleLoad, n as handleSuggest, r as handleValidate, i as normalizeQueryFields };
@@ -21,6 +21,11 @@ export declare function requiresMeasure({ measureCount }: ChartAvailabilityConte
21
21
  export declare const targetDisplayOption: DisplayOptionConfig;
22
22
  /** Connect-nulls toggle for line/area charts. */
23
23
  export declare const connectNullsDisplayOption: DisplayOptionConfig;
24
+ /**
25
+ * Gap-filling control for time-series charts (issue #1368). `auto` follows the
26
+ * query, then the cube time dimension's `fillMissingDates`, then fills.
27
+ */
28
+ export declare const fillMissingDatesDisplayOption: DisplayOptionConfig;
24
29
  /** Left Y-axis numeric format control (dual-axis charts). */
25
30
  export declare const leftYAxisFormatDisplayOption: DisplayOptionConfig;
26
31
  /** Right Y-axis numeric format control (dual-axis charts). */
@@ -31,6 +31,8 @@ export interface BreakdownItem {
31
31
  isTimeDimension: boolean;
32
32
  /** Enable period comparison for time dimensions (compares current filter period vs prior period) */
33
33
  enableComparison?: boolean;
34
+ /** Whether to fill missing buckets for this time dimension. */
35
+ fillMissingDates?: boolean;
34
36
  }
35
37
  /** Validation status for query building */
36
38
  export type ValidationStatus = 'idle' | 'validating' | 'valid' | 'invalid';
@@ -54,6 +56,8 @@ export interface AnalysisBuilderState {
54
56
  order?: Record<string, 'asc' | 'desc'>;
55
57
  /** Row limit for the query (sent to server) */
56
58
  limit?: number;
59
+ /** Value for filled time buckets; `null` leaves a gap. Unset fills with 0. */
60
+ fillMissingDatesValue?: number | null;
57
61
  validationStatus: ValidationStatus;
58
62
  validationError: string | null;
59
63
  }
@@ -9,8 +9,13 @@ export declare function buildCubeQuery(metrics: MetricItem[], breakdowns: Breakd
9
9
  * Record-grain charts list rows rather than aggregates — see
10
10
  * `ChartTypeConfig.recordGrain`. Without this, editing a records-table
11
11
  * portlet in the builder silently rebuilds its query as a grouped one.
12
+ *
13
+ * The server rejects period comparison and `fillMissingDates: true` on an
14
+ * ungrouped query, so it leaves both out and keeps the date filter. The
15
+ * breakdowns keep both settings for when the chart switches back. An
16
+ * explicit `fillMissingDates: false` stays, since the server accepts it.
12
17
  */
13
- ungrouped?: boolean): CubeQuery;
18
+ ungrouped?: boolean, fillMissingDatesValue?: number | null): CubeQuery;
14
19
  /**
15
20
  * Check if a query has any content
16
21
  */
@@ -1,5 +1,5 @@
1
1
  import { useCubeLoadQuery, useFunnelQuery, useFlowQuery, useRetentionQuery } from '../../hooks/queries/index.js';
2
- import { CubeQuery, MultiQueryConfig, ServerFunnelQuery } from '../../types.js';
2
+ import { ChartDisplayConfig, CubeQuery, MultiQueryConfig, ServerFunnelQuery } from '../../types.js';
3
3
  import { FlowChartData, ServerFlowQuery } from '../../types/flow.js';
4
4
  import { RetentionChartData, ServerRetentionQuery } from '../../types/retention.js';
5
5
  interface RefreshOptions {
@@ -18,6 +18,8 @@ export interface UsePortletQueryResultsParams {
18
18
  shouldSkipQuery: boolean;
19
19
  eagerLoad: boolean;
20
20
  isVisible: boolean;
21
+ /** Chart display config — its `fillMissingDates` drives client-side gap filling */
22
+ displayConfig?: ChartDisplayConfig;
21
23
  }
22
24
  export interface PortletQueryResults {
23
25
  resultSet: ReturnType<typeof useCubeLoadQuery>['resultSet'];
@@ -1,5 +1,6 @@
1
1
  import { CubeQuery, CubeResultSet } from '../../types.js';
2
2
  import { QueryWarning } from '../../shared/types.js';
3
+ import { ChartGapFillOptions } from '../../utils/gapFilling.js';
3
4
  /**
4
5
  * Create a stable query key from a CubeQuery
5
6
  * The key includes all query parameters to ensure proper caching
@@ -31,6 +32,12 @@ export interface UseCubeLoadQueryOptions {
31
32
  * @default true
32
33
  */
33
34
  keepPreviousData?: boolean;
35
+ /**
36
+ * Fill missing time buckets for a chart (Cube.js-style, client-side). The
37
+ * server returns observed rows only; when set, the returned result set's rows
38
+ * are gap-filled per `ChartGapFillOptions`. Omit for raw rows.
39
+ */
40
+ gapFill?: ChartGapFillOptions;
34
41
  }
35
42
  /** Options for the refetch function */
36
43
  export interface RefetchOptions {
@@ -1,4 +1,5 @@
1
1
  import { MultiQueryConfig, CubeResultSet } from '../../types.js';
2
+ import { ChartGapFillOptions } from '../../utils/gapFilling.js';
2
3
  /**
3
4
  * Create a stable query key for multi-query
4
5
  */
@@ -29,6 +30,12 @@ export interface UseMultiCubeLoadQueryOptions {
29
30
  * @default true
30
31
  */
31
32
  keepPreviousData?: boolean;
33
+ /**
34
+ * Fill missing time buckets for a chart (Cube.js-style, client-side). When
35
+ * set, each query's rows are gap-filled per `ChartGapFillOptions` before
36
+ * merging. Omit for raw rows.
37
+ */
38
+ gapFill?: ChartGapFillOptions;
32
39
  }
33
40
  export interface UseMultiCubeLoadQueryResult {
34
41
  /** Merged data from all queries */
@@ -1,5 +1,5 @@
1
1
  import { DebugDataEntry } from './queries/index.js';
2
- import { CubeQuery, MultiQueryConfig, FunnelBindingKey, QueryMergeStrategy, AnalysisType } from '../types.js';
2
+ import { CubeQuery, MultiQueryConfig, FunnelBindingKey, QueryMergeStrategy, AnalysisType, ChartDisplayConfig } from '../types.js';
3
3
  import { ExecutionStatus } from '../components/AnalysisBuilder/types.js';
4
4
  import { ServerFunnelQuery } from '../types/funnel.js';
5
5
  import { ServerFlowQuery, FlowChartData } from '../types/flow.js';
@@ -56,6 +56,11 @@ export interface UseAnalysisQueryOptions {
56
56
  errors: string[];
57
57
  warnings: string[];
58
58
  } | null;
59
+ /**
60
+ * The chart's gap-filling setting (`displayConfig.fillMissingDates`). Results
61
+ * are gap-filled client-side per this setting, the query and the cube.
62
+ */
63
+ fillMissingDates?: ChartDisplayConfig['fillMissingDates'];
59
64
  }
60
65
  export interface UseAnalysisQueryResult {
61
66
  /** Query execution status */
@@ -71,6 +71,8 @@ export type { DashboardExportFile, DashboardImportResult, DashboardImportError,
71
71
  export type { DashboardImportExportState, PendingDashboardImport, FailedDashboardImport, } from './hooks/dashboard/useDashboardImportExport.js';
72
72
  export { compressAndEncode, decodeAndDecompress, generateShareUrl, parseShareUrl, isShareableSize } from './utils/shareUtils.js';
73
73
  export { isMultiQueryData, mergeQueryResults, mergeResultsConcat, mergeResultsByKey, getCombinedFields, getQueryLabels, getQueryIndices, generateQueryLabel, validateMergeKey } from './utils/multiQueryUtils.js';
74
+ export { fillChartRows, withChartGapFilling } from './utils/gapFilling.js';
75
+ export type { ChartGapFillOptions } from './utils/gapFilling.js';
74
76
  export { validateFunnelConfig, validateBindingKeyExists, validateStepQueries, validateBindingKeyForSteps, isMinimumFunnelConfigValid, getAvailableBindingKeyDimensions, getBindingKeyLabel, } from './utils/funnelValidation.js';
75
77
  export { getBindingKeyField, getCubeNameFromQuery, formatDuration, transformServerFunnelResult, buildServerFunnelQuery, isFunnelData, buildFunnelConfigFromQueries, } from './utils/funnelExecution.js';
76
78
  export { getThemeVariable, setThemeVariable, applyTheme, resetTheme, getTheme, setTheme, isDarkMode, watchThemeChanges, THEME_PRESETS } from './theme/index.js';
@@ -19,6 +19,8 @@ export interface CubeMetaDimension {
19
19
  type: string;
20
20
  /** Supported granularities for time dimensions (for time-based drill-down) */
21
21
  granularities?: TimeGranularity[];
22
+ /** The cube time dimension's gap-filling default, when it declares one */
23
+ fillMissingDates?: boolean;
22
24
  }
23
25
  export interface CubeMetaField {
24
26
  name: string;
@@ -146,6 +148,7 @@ export interface ChartDisplayConfig {
146
148
  stacked?: boolean;
147
149
  stackType?: 'none' | 'normal' | 'percent';
148
150
  connectNulls?: boolean;
151
+ fillMissingDates?: boolean | 'auto';
149
152
  showSummary?: boolean;
150
153
  showPoints?: boolean;
151
154
  showAllXLabels?: boolean;
@@ -400,6 +403,8 @@ export interface CubeQuery {
400
403
  limit?: number;
401
404
  offset?: number;
402
405
  segments?: string[];
406
+ /** Value for filled time buckets; `null` leaves a gap. Unset fills with 0. */
407
+ fillMissingDatesValue?: number | null;
403
408
  /** When true, returns raw row-level data without GROUP BY or aggregation */
404
409
  ungrouped?: boolean;
405
410
  /**
@@ -0,0 +1,52 @@
1
+ import { CubeResultSet } from '../types.js';
2
+ /** A chart's gap-filling preference. */
3
+ export interface ChartGapFillOptions {
4
+ /** `true`/`false` force filling on/off; `'auto'` or unset defers to the query and cube. */
5
+ fillMissingDates?: boolean | 'auto';
6
+ }
7
+ /** A time dimension of the query a result came from. */
8
+ export interface ChartGapFillTimeDimension {
9
+ dimension: string;
10
+ granularity?: string;
11
+ dateRange?: string | string[];
12
+ fillMissingDates?: boolean;
13
+ compareDateRange?: readonly unknown[];
14
+ }
15
+ /** The parts of a query chart gap filling reads. */
16
+ export interface ChartGapFillQuery {
17
+ measures?: readonly string[];
18
+ dimensions?: readonly string[];
19
+ timeDimensions?: readonly ChartGapFillTimeDimension[];
20
+ filters?: readonly ChartGapFillFilter[];
21
+ fillMissingDatesValue?: number | null;
22
+ ungrouped?: boolean;
23
+ }
24
+ interface ChartGapFillFilter {
25
+ member?: string;
26
+ operator?: string;
27
+ values?: readonly unknown[];
28
+ dateRange?: string | string[];
29
+ and?: readonly ChartGapFillFilter[];
30
+ or?: readonly ChartGapFillFilter[];
31
+ }
32
+ interface TimeDimensionAnnotation {
33
+ fillMissingDates?: boolean;
34
+ }
35
+ /**
36
+ * Fill missing time buckets in result rows for a chart.
37
+ *
38
+ * Comparison (`compareDateRange`) dimensions are left alone — the server fills
39
+ * each period already and the rows carry period metadata. Ungrouped queries are
40
+ * never filled.
41
+ */
42
+ export declare function fillChartRows(rows: Record<string, unknown>[], query: ChartGapFillQuery, annotation: {
43
+ timeDimensions?: Record<string, TimeDimensionAnnotation>;
44
+ } | undefined, options?: ChartGapFillOptions): Record<string, unknown>[];
45
+ /**
46
+ * Wrap a result set so its rows are gap-filled for a chart. The underlying
47
+ * result set (and the query cache holding it) stays raw, so changing the chart
48
+ * setting never refetches. Returns the result set unchanged when it does not
49
+ * carry the query it came from.
50
+ */
51
+ export declare function withChartGapFilling(resultSet: CubeResultSet, options?: ChartGapFillOptions): CubeResultSet;
52
+ export {};
@@ -6,6 +6,7 @@ export * from './periodUtils.js';
6
6
  export * from './pivotUtils.js';
7
7
  export * from './syntaxHighlighting.js';
8
8
  export * from './comparisonUtils.js';
9
+ export * from './gapFilling.js';
9
10
  export { captureThumbnail, isThumbnailCaptureAvailable } from './thumbnail.js';
10
11
  export { exportPortletToXlsx, isExportAvailable } from './exportXlsx.js';
11
12
  export { createDashboardExport, serializeDashboardExport, parseDashboardExport, readDashboardExportFile, downloadDashboardExport, dashboardExportFilename, normalizeDashboardConfigForExport, } from './dashboardExport.js';
@@ -76,7 +76,7 @@ export declare const QUERY_PARAMS_SCHEMA: {
76
76
  };
77
77
  readonly fillMissingDates: {
78
78
  readonly type: "boolean";
79
- readonly description: "Fill gaps in time series with fillMissingDatesValue (default: true). Requires granularity + dateRange.";
79
+ readonly description: "Fill gaps in time series with fillMissingDatesValue. Default: off (observed rows only) unless the cube time dimension enables it. Requires granularity + dateRange.";
80
80
  };
81
81
  readonly compareDateRange: {
82
82
  readonly type: "array";
@@ -1,4 +1,4 @@
1
- import { SemanticQuery } from '../types/index.js';
1
+ import { Cube, SemanticQuery } from '../types/index.js';
2
2
  import { DatabaseAdapter } from '../adapters/base-adapter.js';
3
3
  /**
4
4
  * Normalise time-dimension values in result rows and apply gap filling.
@@ -6,5 +6,7 @@ import { DatabaseAdapter } from '../adapters/base-adapter.js';
6
6
  * @param data Raw rows from the database executor
7
7
  * @param query The semantic query (for timeDimensions + measures)
8
8
  * @param databaseAdapter Adapter used to convert engine-specific date results
9
+ * @param cubes Cube definitions, for each time dimension's `fillMissingDates`
10
+ * @param fillByDefault Gap-fill time dimensions neither the query nor the cube configures
9
11
  */
10
- export declare function postProcessResultRows(data: unknown, query: SemanticQuery, databaseAdapter: DatabaseAdapter): Record<string, unknown>[];
12
+ export declare function postProcessResultRows(data: unknown, query: SemanticQuery, databaseAdapter: DatabaseAdapter, cubes?: Map<string, Cube>, fillByDefault?: boolean): Record<string, unknown>[];
@@ -93,6 +93,8 @@ export declare class QueryExecutor {
93
93
  * @param cacheKey - When provided (and a cache provider is configured), the
94
94
  * fresh result is written to the cache. Pass `undefined` to skip caching
95
95
  * (e.g. comparison period sub-queries cache at the comparison level).
96
+ * @param fillByDefault - Gap-fill time dimensions that neither the query nor
97
+ * the cube configures. Only comparison period sub-queries pass `true`.
96
98
  */
97
99
  private executeStandardQuery;
98
100
  /**
@@ -1,48 +1,13 @@
1
+ import { Cube } from './types/cube.js';
1
2
  import { SemanticQuery } from './types/query.js';
2
- import { TimeGranularity } from './types/core.js';
3
+ export { generateTimeBuckets, fillTimeSeriesGaps, parseDateRange, MAX_GAP_FILL_BUCKETS, type GapFillerConfig } from '../shared/gap-filler.js';
3
4
  /**
4
- * Maximum number of time buckets gap filling will generate. Beyond this, gap
5
- * filling is skipped entirely (data is returned unmodified) to avoid both
6
- * runaway memory use and silent truncation of real rows.
7
- */
8
- export declare const MAX_GAP_FILL_BUCKETS = 10000;
9
- export interface GapFillerConfig {
10
- /** The time dimension key (e.g., 'Sales.date') */
11
- timeDimensionKey: string;
12
- /** Time granularity for bucket generation */
13
- granularity: TimeGranularity;
14
- /** Date range [start, end] */
15
- dateRange: [Date, Date];
16
- /** Value to fill for missing measures (default: 0) */
17
- fillValue: number | null;
18
- /** List of measure keys in the data */
19
- measures: string[];
20
- /** List of dimension keys in the data (excluding time dimensions) */
21
- dimensions: string[];
22
- }
23
- /**
24
- * Generate all time buckets for a given date range and granularity
25
- */
26
- export declare function generateTimeBuckets(startDate: Date, endDate: Date, granularity: TimeGranularity): Date[];
27
- /**
28
- * Fill time series gaps in query result data
5
+ * Apply server-side gap filling to query result rows.
29
6
  *
30
- * @param data - Original query result data
31
- * @param config - Gap filling configuration
32
- * @returns Data with gaps filled
33
- */
34
- export declare function fillTimeSeriesGaps(data: Record<string, unknown>[], config: GapFillerConfig): Record<string, unknown>[];
35
- /**
36
- * Parse date range from query time dimension
37
- * Handles both array format ['2024-01-01', '2024-01-31'] and string format
38
- */
39
- export declare function parseDateRange(dateRange: string | string[] | undefined): [Date, Date] | null;
40
- /**
41
- * Apply gap filling to query result data based on query configuration
7
+ * Precedence per time dimension: the query's `fillMissingDates`, then the cube
8
+ * dimension's, then `fillByDefault`. Ungrouped queries are never filled.
42
9
  *
43
- * @param data - Original query result data
44
- * @param query - The semantic query
45
- * @param measures - List of measure names in the result
46
- * @returns Data with gaps filled (if applicable)
10
+ * @param fillByDefault - Fill when neither the query nor the cube says. Only
11
+ * comparison-period sub-queries pass `true`, to keep periods aligned.
47
12
  */
48
- export declare function applyGapFilling(data: Record<string, unknown>[], query: SemanticQuery, measures: string[]): Record<string, unknown>[];
13
+ export declare function applyServerGapFilling(data: Record<string, unknown>[], query: SemanticQuery, cubes?: Map<string, Cube>, fillByDefault?: boolean): Record<string, unknown>[];
@@ -165,6 +165,8 @@ export interface TimeDimensionAnnotation {
165
165
  shortTitle: string;
166
166
  type: string;
167
167
  granularity?: TimeGranularity;
168
+ /** The cube time dimension's `fillMissingDates`, when it declares one */
169
+ fillMissingDates?: boolean;
168
170
  }
169
171
  /**
170
172
  * Type enums and constants
@@ -191,6 +191,18 @@ export interface Dimension {
191
191
  * @example ['year', 'quarter', 'month', 'day'] for a custom subset
192
192
  */
193
193
  granularities?: TimeGranularity[];
194
+ /**
195
+ * Whether missing time buckets are filled for this time dimension when a
196
+ * query or chart does not say. Only applies when type is 'time'.
197
+ *
198
+ * - Server: a query that omits `fillMissingDates` is filled only when this is
199
+ * `true`. Unset means observed rows only (the Cube.js default).
200
+ * - Charts: fill gaps by default, like Cube.js. Set `false` where a missing
201
+ * bucket means "no data" rather than zero, e.g. daily snapshot tables.
202
+ *
203
+ * A query's or chart's own `fillMissingDates` always wins.
204
+ */
205
+ fillMissingDates?: boolean;
194
206
  }
195
207
  /**
196
208
  * Measure definition
@@ -77,6 +77,11 @@ export interface DimensionMetadata {
77
77
  * Used for time-based drill-down (year -> quarter -> month -> week -> day)
78
78
  */
79
79
  granularities?: TimeGranularity[];
80
+ /**
81
+ * The time dimension's `fillMissingDates` default, when the cube declares one.
82
+ * Charts use it to decide whether to fill missing buckets.
83
+ */
84
+ fillMissingDates?: boolean;
80
85
  }
81
86
  /**
82
87
  * Hierarchy metadata for structured drill-down paths
@@ -135,7 +135,8 @@ export interface TimeDimension {
135
135
  /**
136
136
  * Fill missing dates in time series with the fill value.
137
137
  * Requires both granularity and dateRange to be set.
138
- * Default: true (enabled)
138
+ * Default: the cube time dimension's `fillMissingDates`, else false — the
139
+ * server returns observed rows only and charts fill gaps client-side.
139
140
  */
140
141
  fillMissingDates?: boolean;
141
142
  /**
@@ -21,6 +21,11 @@ export declare function requiresMeasure({ measureCount }: ChartAvailabilityConte
21
21
  export declare const targetDisplayOption: DisplayOptionConfig;
22
22
  /** Connect-nulls toggle for line/area charts. */
23
23
  export declare const connectNullsDisplayOption: DisplayOptionConfig;
24
+ /**
25
+ * Gap-filling control for time-series charts (issue #1368). `auto` follows the
26
+ * query, then the cube time dimension's `fillMissingDates`, then fills.
27
+ */
28
+ export declare const fillMissingDatesDisplayOption: DisplayOptionConfig;
24
29
  /** Left Y-axis numeric format control (dual-axis charts). */
25
30
  export declare const leftYAxisFormatDisplayOption: DisplayOptionConfig;
26
31
  /** Right Y-axis numeric format control (dual-axis charts). */
@@ -1,14 +1,14 @@
1
- import { dt as e, ft as t, gt as n, ht as r, lt as i, mt as a, pt as o, t as s, ut as c } from "./chunks/chart-data-table-zSjYEy0r.js";
2
- import { d as l, l as u, s as d, u as f } from "./chunks/chart-activity-grid-Bbc58UJD.js";
3
- import { t as p } from "./chunks/chart-funnel-CuOSCsbt.js";
4
- import { a as m, i as h, n as g, o as _, r as v, s as y, t as b } from "./chunks/charts-loader-Bz9yHkW1.js";
5
- import { t as x } from "./chunks/chart-area-9uCXIvMN.js";
1
+ import { dt as e, ft as t, gt as n, ht as r, lt as i, mt as a, pt as o, t as s, ut as c } from "./chunks/chart-data-table-Cxd0cdAl.js";
2
+ import { d as l, l as u, s as d, u as f } from "./chunks/chart-activity-grid-Ly_-2B-f.js";
3
+ import { t as p } from "./chunks/chart-funnel-71Kn4eeF.js";
4
+ import { a as m, i as h, n as g, o as _, r as v, s as y, t as b } from "./chunks/charts-loader-DoLQqFXg.js";
5
+ import { t as x } from "./chunks/chart-area-D3l-71Wy.js";
6
6
  import { i as S } from "./chunks/utils-CToHkuhU.js";
7
- import { t as C } from "./chunks/chart-bar-C5a1T9Ce.js";
8
- import { t as w } from "./chunks/chart-line-CjW9Yo03.js";
9
- import { t as T } from "./chunks/chart-pie-BTb5nKd7.js";
10
- import { t as E } from "./chunks/chart-scatter-Bdj95OeV.js";
11
- import { t as D } from "./chunks/chart-radar-8384sPlX.js";
12
- import { t as O } from "./chunks/chart-radial-bar-CuBmmOTU.js";
13
- import { t as k } from "./chunks/chart-tree-map-CtJADX87.js";
7
+ import { t as C } from "./chunks/chart-bar-BaTyQOqs.js";
8
+ import { t as w } from "./chunks/chart-line-BNqjUowg.js";
9
+ import { t as T } from "./chunks/chart-pie-D8r9HCZ4.js";
10
+ import { t as E } from "./chunks/chart-scatter-CH82md0L.js";
11
+ import { t as D } from "./chunks/chart-radar-R4PuCIWp.js";
12
+ import { t as O } from "./chunks/chart-radial-bar-hmrSFa6O.js";
13
+ import { t as k } from "./chunks/chart-tree-map-CmysE4bF.js";
14
14
  export { d as CHART_COLORS, u as CHART_MARGINS, s as DataTable, p as FunnelChart, b as LazyChart, f as NEGATIVE_COLOR, l as POSITIVE_COLOR, x as RechartsAreaChart, C as RechartsBarChart, w as RechartsLineChart, T as RechartsPieChart, D as RechartsRadarChart, O as RechartsRadialBarChart, E as RechartsScatterChart, k as RechartsTreeMapChart, i as clearChartConfigCache, S as formatChartData, g as getAvailableChartTypes, c as getChartConfigAsync, e as getChartConfigSync, v as getUnavailableChartTypes, t as isChartConfigLoaded, h as isChartTypeAvailable, m as isValidChartType, o as loadAllChartConfigs, _ as preloadChart, a as preloadChartConfig, r as preloadChartConfigs, y as preloadCharts, n as useChartConfig };