drizzle-cube 0.8.2 → 0.9.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.
Files changed (295) hide show
  1. package/dist/adapters/ActivityGridChart.config-DfyZh3He.js +2 -0
  2. package/dist/adapters/ActivityGridChart.config-DgOwl51m.cjs +1 -0
  3. package/dist/adapters/AreaChart.config-BL_ZpMsg.js +2 -0
  4. package/dist/adapters/AreaChart.config-rc1phjmI.cjs +1 -0
  5. package/dist/adapters/BarChart.config-C6k4BxhM.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CBACR7Z-.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-Bvg6yFn2.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-CAlLRM0v.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-22qXNskY.js +2 -0
  10. package/dist/adapters/BubbleChart.config-BkB3P6Bi.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-DuZb-y6d.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-G78UbuwS.js +2 -0
  13. package/dist/adapters/DataTable.config-BXkpzOC2.js +2 -0
  14. package/dist/adapters/DataTable.config-CwPlSht6.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-Bw9Ww5zY.cjs +1 -0
  16. package/dist/adapters/DotStripChart.config-D5sbLAqA.js +2 -0
  17. package/dist/adapters/FunnelChart.config-CUs1rqN2.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-Cw9qrC2C.js +2 -0
  19. package/dist/adapters/GaugeChart.config-CjGtJVoO.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-F5SA5Oi3.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-CvgmSiuY.cjs +1 -0
  22. package/dist/adapters/HeatMapChart.config-DrvQrPHT.js +2 -0
  23. package/dist/adapters/KpiDelta.config-B-UJWdJ5.cjs +1 -0
  24. package/dist/adapters/KpiDelta.config-C00mTZYy.js +2 -0
  25. package/dist/adapters/KpiNumber.config-CB0kTeoV.cjs +1 -0
  26. package/dist/adapters/KpiNumber.config-D3CogH8j.js +2 -0
  27. package/dist/adapters/KpiText.config-B0LbKRCf.js +2 -0
  28. package/dist/adapters/KpiText.config-Dv4TNprC.cjs +1 -0
  29. package/dist/adapters/LineChart.config-CdONxSLL.js +2 -0
  30. package/dist/adapters/LineChart.config-DBHsfIYG.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-AYKXdpuw.cjs +1 -0
  32. package/dist/adapters/MarkdownChart.config-CngxD_Lc.js +2 -0
  33. package/dist/adapters/MeasureProfileChart.config-B0a5sUk6.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-ByW5F1Ey.js +2 -0
  35. package/dist/adapters/PieChart.config-Csx1ctk4.js +2 -0
  36. package/dist/adapters/PieChart.config-Dfw66Xab.cjs +1 -0
  37. package/dist/adapters/ProportionBarChart.config-BaeYznc1.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-DCOizSVs.js +2 -0
  39. package/dist/adapters/RadarChart.config-AxQh97rB.js +2 -0
  40. package/dist/adapters/RadarChart.config-BjP-zEGW.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config-D5EwyJ0G.cjs +1 -0
  42. package/dist/adapters/RadialBarChart.config-DMaEJYM_.js +2 -0
  43. package/dist/adapters/RecordsTable.config-BdN0kZ8b.js +2 -0
  44. package/dist/adapters/RecordsTable.config-CWRvGDbi.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-BpciOTeX.cjs +1 -0
  46. package/dist/adapters/RetentionCombinedChart.config-CY8TDzuy.js +2 -0
  47. package/dist/adapters/RetentionHeatmap.config-BZPRoVpF.cjs +1 -0
  48. package/dist/adapters/RetentionHeatmap.config-YMZt-u-T.js +2 -0
  49. package/dist/adapters/SankeyChart.config-BdSA-Jlp.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-Dlgi5_DA.js +2 -0
  51. package/dist/adapters/ScatterChart.config-VJ0xG0Ak.cjs +1 -0
  52. package/dist/adapters/ScatterChart.config-oOd1Jplx.js +2 -0
  53. package/dist/adapters/SunburstChart.config-Cllhyjy4.js +2 -0
  54. package/dist/adapters/SunburstChart.config-DU11BAei.cjs +1 -0
  55. package/dist/adapters/TreeMapChart.config--EB8bQTo.js +2 -0
  56. package/dist/adapters/TreeMapChart.config-BPmMLBH1.cjs +1 -0
  57. package/dist/adapters/WaterfallChart.config-E99Fl6uM.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-xz3DaoMQ.js +2 -0
  59. package/dist/adapters/{anthropic-DG4r1LSm.cjs → anthropic-CqLkud62.cjs} +1 -1
  60. package/dist/adapters/{anthropic-CZh4hB-m.js → anthropic-MQlafOZv.js} +3 -0
  61. package/dist/adapters/compiler-BdVMQ3Xj.cjs +166 -0
  62. package/dist/adapters/{compiler-BFLAXV7W.js → compiler-SBDjxyQ3.js} +1231 -1231
  63. package/dist/adapters/core/index.cjs +1 -1
  64. package/dist/adapters/core/index.js +1 -1
  65. package/dist/adapters/{core-CrJu6vJY.cjs → core-CSt8MGbw.cjs} +1 -1
  66. package/dist/adapters/{core-l3KMTu9u.js → core-CXrxqh7l.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 +23 -23
  71. package/dist/{server/google-PsZzwedr.cjs → adapters/google-6pofxIfm.cjs} +1 -1
  72. package/dist/{server/google-DRY7jnOh.js → adapters/google-BBBP1Dhs.js} +3 -0
  73. package/dist/adapters/{handler-DESp4wPg.js → handler-Cppe-aqH.js} +569 -374
  74. package/dist/adapters/handler-_u5krbOj.cjs +26 -0
  75. package/dist/adapters/hono/index.cjs +1 -1
  76. package/dist/adapters/hono/index.js +4 -4
  77. package/dist/adapters/mcp-tools.cjs +1 -1
  78. package/dist/adapters/mcp-tools.js +2 -2
  79. package/dist/adapters/mcp-transport-CpF7usmR.js +754 -0
  80. package/dist/adapters/mcp-transport-DXIfb0p-.cjs +42 -0
  81. package/dist/adapters/nextjs/index.cjs +1 -1
  82. package/dist/adapters/nextjs/index.js +5 -5
  83. package/dist/adapters/{openai-DK_KWiI7.js → openai-62sEF0Ev.js} +10 -4
  84. package/dist/adapters/{openai-BJyU4kvE.js → openai-BIoIunc7.js} +2 -2
  85. package/dist/adapters/openai-CaxNY6TC.cjs +1 -0
  86. package/dist/adapters/{openai-GO3M7Hwi.cjs → openai-EBTQKJnV.cjs} +2 -2
  87. package/dist/adapters/{utils-BhlkVCzZ.js → utils-C_RKaP0n.js} +2 -1
  88. package/dist/adapters/utils-DXWQUJbD.cjs +128 -0
  89. package/dist/adapters/utils.cjs +1 -1
  90. package/dist/adapters/utils.js +2 -2
  91. package/dist/cjs/client/components/AgenticNotebook/chatMessageParts.d.ts +0 -2
  92. package/dist/cjs/client/components/PortletGroupCard.d.ts +3 -1
  93. package/dist/cjs/client/components/RowManagedLayout.d.ts +5 -2
  94. package/dist/cjs/client/components/dashboardPortletCard/cardStyles.d.ts +7 -3
  95. package/dist/cjs/client/components/markdownOverrides.d.ts +202 -0
  96. package/dist/cjs/client/components/rowManagedLayout/sections.d.ts +46 -0
  97. package/dist/cjs/client/hooks/agentChatStream.d.ts +3 -2
  98. package/dist/cjs/client/hooks/useAgentChat.d.ts +1 -0
  99. package/dist/cjs/server/agent/agent-prompts.d.ts +14 -0
  100. package/dist/cjs/server/agent/chart-validation.d.ts +14 -0
  101. package/dist/cjs/server/agent/data-shape.d.ts +41 -0
  102. package/dist/cjs/server/agent/providers/anthropic.d.ts +1 -0
  103. package/dist/cjs/server/agent/providers/google.d.ts +1 -0
  104. package/dist/cjs/server/agent/providers/openai.d.ts +1 -0
  105. package/dist/cjs/server/agent/providers/types.d.ts +13 -0
  106. package/dist/cjs/server/agent/tools.d.ts +18 -4
  107. package/dist/cjs/server/agent/types.d.ts +5 -1
  108. package/dist/cjs/server/ai/chart-schema.d.ts +37 -0
  109. package/dist/client/charts.js +12 -12
  110. package/dist/client/chunks/{DashboardEditModal-BliiIHcI.js → DashboardEditModal-DjMGNTUa.js} +878 -785
  111. package/dist/client/chunks/DashboardEditModal-DjMGNTUa.js.map +1 -0
  112. package/dist/client/chunks/{DotStripChart-ChwsVeRU.js → DotStripChart-EEtJyV1v.js} +3 -3
  113. package/dist/client/chunks/{DotStripChart-ChwsVeRU.js.map → DotStripChart-EEtJyV1v.js.map} +1 -1
  114. package/dist/client/chunks/{ProportionBarChart-D-Qt9nkF.js → ProportionBarChart-3r7ZPX-V.js} +3 -3
  115. package/dist/client/chunks/{ProportionBarChart-D-Qt9nkF.js.map → ProportionBarChart-3r7ZPX-V.js.map} +1 -1
  116. package/dist/client/chunks/{RecordsTable-aG-QYXOH.js → RecordsTable-DvMXV6F6.js} +4 -4
  117. package/dist/client/chunks/{RecordsTable-aG-QYXOH.js.map → RecordsTable-DvMXV6F6.js.map} +1 -1
  118. package/dist/client/chunks/{RetentionCombinedChart-BRZ9w7ah.js → RetentionCombinedChart-DbxB86fj.js} +3 -3
  119. package/dist/client/chunks/{RetentionCombinedChart-BRZ9w7ah.js.map → RetentionCombinedChart-DbxB86fj.js.map} +1 -1
  120. package/dist/client/chunks/{RetentionHeatmap-LkTt89pK.js → RetentionHeatmap-CE3rxhAU.js} +2 -2
  121. package/dist/client/chunks/{RetentionHeatmap-LkTt89pK.js.map → RetentionHeatmap-CE3rxhAU.js.map} +1 -1
  122. package/dist/client/chunks/{analysis-builder-C0gJ3kDD.js → analysis-builder-lQk_qJBQ.js} +9 -9
  123. package/dist/client/chunks/{analysis-builder-C0gJ3kDD.js.map → analysis-builder-lQk_qJBQ.js.map} +1 -1
  124. package/dist/client/chunks/{analysis-builder-shared-dqcpl_WL.js → analysis-builder-shared-C_pLSXJR.js} +9 -9
  125. package/dist/client/chunks/{analysis-builder-shared-dqcpl_WL.js.map → analysis-builder-shared-C_pLSXJR.js.map} +1 -1
  126. package/dist/client/chunks/{chart-activity-grid-CJzxC18G.js → chart-activity-grid-UZIp9_2E.js} +3 -2
  127. package/dist/client/chunks/chart-activity-grid-UZIp9_2E.js.map +1 -0
  128. package/dist/client/chunks/{chart-area-C66dgy84.js → chart-area-CEBcvCcn.js} +2 -2
  129. package/dist/client/chunks/{chart-area-C66dgy84.js.map → chart-area-CEBcvCcn.js.map} +1 -1
  130. package/dist/client/chunks/{chart-bar-D9kiSOCT.js → chart-bar-DGh7cpU-.js} +3 -3
  131. package/dist/client/chunks/{chart-bar-D9kiSOCT.js.map → chart-bar-DGh7cpU-.js.map} +1 -1
  132. package/dist/client/chunks/{chart-box-plot-FsLIMisc.js → chart-box-plot-CeqoKPFa.js} +2 -2
  133. package/dist/client/chunks/{chart-box-plot-FsLIMisc.js.map → chart-box-plot-CeqoKPFa.js.map} +1 -1
  134. package/dist/client/chunks/{chart-bubble-BzyvrqKs.js → chart-bubble-8uH_JKNt.js} +2 -2
  135. package/dist/client/chunks/{chart-bubble-BzyvrqKs.js.map → chart-bubble-8uH_JKNt.js.map} +1 -1
  136. package/dist/client/chunks/{chart-candlestick-6lD35bLw.js → chart-candlestick-DogklMg1.js} +2 -2
  137. package/dist/client/chunks/{chart-candlestick-6lD35bLw.js.map → chart-candlestick-DogklMg1.js.map} +1 -1
  138. package/dist/client/chunks/{chart-data-table-Cou9qOab.js → chart-data-table-CCvvgeG_.js} +2 -2
  139. package/dist/client/chunks/{chart-data-table-Cou9qOab.js.map → chart-data-table-CCvvgeG_.js.map} +1 -1
  140. package/dist/client/chunks/{chart-funnel-B0775aaT.js → chart-funnel-D2vGQhaz.js} +2 -2
  141. package/dist/client/chunks/{chart-funnel-B0775aaT.js.map → chart-funnel-D2vGQhaz.js.map} +1 -1
  142. package/dist/client/chunks/{chart-gauge-pf-2E8w9.js → chart-gauge-DbU0rxqv.js} +3 -3
  143. package/dist/client/chunks/{chart-gauge-pf-2E8w9.js.map → chart-gauge-DbU0rxqv.js.map} +1 -1
  144. package/dist/client/chunks/{chart-heat-map-EzVGe6fl.js → chart-heat-map-x6aQq91x.js} +3 -3
  145. package/dist/client/chunks/{chart-heat-map-EzVGe6fl.js.map → chart-heat-map-x6aQq91x.js.map} +1 -1
  146. package/dist/client/chunks/{chart-kpi-delta-lfskDdx4.js → chart-kpi-delta-B2-m16QC.js} +3 -3
  147. package/dist/client/chunks/{chart-kpi-delta-lfskDdx4.js.map → chart-kpi-delta-B2-m16QC.js.map} +1 -1
  148. package/dist/client/chunks/{chart-kpi-number-BnsofbTf.js → chart-kpi-number-DggvlYT_.js} +5 -5
  149. package/dist/client/chunks/{chart-kpi-number-BnsofbTf.js.map → chart-kpi-number-DggvlYT_.js.map} +1 -1
  150. package/dist/client/chunks/{chart-kpi-text-U5EdmdkV.js → chart-kpi-text-BFy-m1NP.js} +3 -3
  151. package/dist/client/chunks/{chart-kpi-text-U5EdmdkV.js.map → chart-kpi-text-BFy-m1NP.js.map} +1 -1
  152. package/dist/client/chunks/{chart-line-IwXqPY80.js → chart-line-C4r44HWi.js} +3 -3
  153. package/dist/client/chunks/{chart-line-IwXqPY80.js.map → chart-line-C4r44HWi.js.map} +1 -1
  154. package/dist/client/chunks/{chart-markdown-yxN_xBP9.js → chart-markdown-b0qPZ617.js} +3 -3
  155. package/dist/client/chunks/chart-markdown-b0qPZ617.js.map +1 -0
  156. package/dist/client/chunks/{chart-measure-profile-Bs4vhBJQ.js → chart-measure-profile-Dc-d82kF.js} +3 -3
  157. package/dist/client/chunks/{chart-measure-profile-Bs4vhBJQ.js.map → chart-measure-profile-Dc-d82kF.js.map} +1 -1
  158. package/dist/client/chunks/{chart-pie-LDJfDXfX.js → chart-pie-BHrPxga2.js} +3 -3
  159. package/dist/client/chunks/{chart-pie-LDJfDXfX.js.map → chart-pie-BHrPxga2.js.map} +1 -1
  160. package/dist/client/chunks/{chart-radar-BZY6TP9m.js → chart-radar-I9sOFbG5.js} +3 -3
  161. package/dist/client/chunks/{chart-radar-BZY6TP9m.js.map → chart-radar-I9sOFbG5.js.map} +1 -1
  162. package/dist/client/chunks/{chart-radial-bar-aga05X7h.js → chart-radial-bar-DeDMMf9P.js} +3 -3
  163. package/dist/client/chunks/{chart-radial-bar-aga05X7h.js.map → chart-radial-bar-DeDMMf9P.js.map} +1 -1
  164. package/dist/client/chunks/{chart-sankey-MRCoWFd4.js → chart-sankey-1qB7yWHq.js} +2 -2
  165. package/dist/client/chunks/{chart-sankey-MRCoWFd4.js.map → chart-sankey-1qB7yWHq.js.map} +1 -1
  166. package/dist/client/chunks/{chart-scatter-DP-nn9hH.js → chart-scatter-BHttSxcc.js} +3 -3
  167. package/dist/client/chunks/{chart-scatter-DP-nn9hH.js.map → chart-scatter-BHttSxcc.js.map} +1 -1
  168. package/dist/client/chunks/{chart-sunburst-DE4EX7zi.js → chart-sunburst-Cmzol8kR.js} +3 -3
  169. package/dist/client/chunks/{chart-sunburst-DE4EX7zi.js.map → chart-sunburst-Cmzol8kR.js.map} +1 -1
  170. package/dist/client/chunks/{chart-tree-map-C3O6uQcP.js → chart-tree-map-CdSwr_zI.js} +3 -3
  171. package/dist/client/chunks/{chart-tree-map-C3O6uQcP.js.map → chart-tree-map-CdSwr_zI.js.map} +1 -1
  172. package/dist/client/chunks/{chart-waterfall-DU2Fg_7P.js → chart-waterfall-BN3B5luW.js} +3 -3
  173. package/dist/client/chunks/{chart-waterfall-DU2Fg_7P.js.map → chart-waterfall-BN3B5luW.js.map} +1 -1
  174. package/dist/client/chunks/{charts-core-DnirPG1F.js → charts-core-DIneMirc.js} +2 -2
  175. package/dist/client/chunks/{charts-core-DnirPG1F.js.map → charts-core-DIneMirc.js.map} +1 -1
  176. package/dist/client/chunks/charts-loader-OHpTBq8c.js +87 -0
  177. package/dist/client/chunks/{charts-loader-tCSbqT7H.js.map → charts-loader-OHpTBq8c.js.map} +1 -1
  178. package/dist/client/chunks/{nl-NL-B9VnaVAm.js → nl-NL-dk-kC0sL.js} +2 -1
  179. package/dist/client/chunks/nl-NL-dk-kC0sL.js.map +1 -0
  180. package/dist/client/chunks/{schema-visualization-o1zzuMQy.js → schema-visualization-PYa578pV.js} +3 -3
  181. package/dist/client/chunks/{schema-visualization-o1zzuMQy.js.map → schema-visualization-PYa578pV.js.map} +1 -1
  182. package/dist/client/chunks/{useDirtyStateTracking-DTYbmRBn.js → useDirtyStateTracking-BQupC3wJ.js} +4 -4
  183. package/dist/client/chunks/{useDirtyStateTracking-DTYbmRBn.js.map → useDirtyStateTracking-BQupC3wJ.js.map} +1 -1
  184. package/dist/client/chunks/{useExplainAI-MuC9jBn-.js → useExplainAI-DORnTynt.js} +4 -4
  185. package/dist/client/chunks/{useExplainAI-MuC9jBn-.js.map → useExplainAI-DORnTynt.js.map} +1 -1
  186. package/dist/client/chunks/{vendor-XQT9APIq.js → vendor-DDo8nSGP.js} +2 -2
  187. package/dist/client/chunks/{vendor-XQT9APIq.js.map → vendor-DDo8nSGP.js.map} +1 -1
  188. package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +0 -2
  189. package/dist/client/components/PortletGroupCard.d.ts +3 -1
  190. package/dist/client/components/RowManagedLayout.d.ts +5 -2
  191. package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +7 -3
  192. package/dist/client/components/markdownOverrides.d.ts +202 -0
  193. package/dist/client/components/rowManagedLayout/sections.d.ts +46 -0
  194. package/dist/client/components.js +1 -1
  195. package/dist/client/hooks/agentChatStream.d.ts +3 -2
  196. package/dist/client/hooks/useAgentChat.d.ts +1 -0
  197. package/dist/client/hooks.js +3 -3
  198. package/dist/client/icons.js +1 -1
  199. package/dist/client/index.js +474 -471
  200. package/dist/client/index.js.map +1 -1
  201. package/dist/client/providers.js +1 -1
  202. package/dist/client/schema.js +1 -1
  203. package/dist/client/styles.css +1 -1
  204. package/dist/client/utils.js +4 -4
  205. package/dist/client-bundle-stats.html +1 -1
  206. package/dist/mcp-app/mcp-app.html +4 -4
  207. package/dist/server/agent/agent-prompts.d.ts +14 -0
  208. package/dist/server/agent/chart-validation.d.ts +14 -0
  209. package/dist/server/agent/data-shape.d.ts +41 -0
  210. package/dist/server/agent/providers/anthropic.d.ts +1 -0
  211. package/dist/server/agent/providers/google.d.ts +1 -0
  212. package/dist/server/agent/providers/openai.d.ts +1 -0
  213. package/dist/server/agent/providers/types.d.ts +13 -0
  214. package/dist/server/agent/tools.d.ts +18 -4
  215. package/dist/server/agent/types.d.ts +5 -1
  216. package/dist/server/ai/chart-schema.d.ts +37 -0
  217. package/dist/server/{anthropic-DG4r1LSm.cjs → anthropic-CqLkud62.cjs} +1 -1
  218. package/dist/server/{anthropic-CZh4hB-m.js → anthropic-MQlafOZv.js} +3 -0
  219. package/dist/{adapters/google-PsZzwedr.cjs → server/google-6pofxIfm.cjs} +1 -1
  220. package/dist/{adapters/google-DRY7jnOh.js → server/google-BBBP1Dhs.js} +3 -0
  221. package/dist/server/index.cjs +44 -43
  222. package/dist/server/index.js +2069 -1857
  223. package/dist/server/{openai-6uUf7h-5.js → openai-nBhuSFd3.js} +9 -3
  224. package/dist/server/openai-rF50ZEiR.cjs +1 -0
  225. package/package.json +4 -4
  226. package/dist/adapters/ActivityGridChart.config-Bc7mPqcf.cjs +0 -1
  227. package/dist/adapters/ActivityGridChart.config-Dd2YDeaM.js +0 -2
  228. package/dist/adapters/AreaChart.config-BqNusnpg.js +0 -2
  229. package/dist/adapters/AreaChart.config-dI84V34B.cjs +0 -1
  230. package/dist/adapters/BarChart.config-B9MQjgLJ.cjs +0 -1
  231. package/dist/adapters/BarChart.config-Cq_qcxBA.js +0 -2
  232. package/dist/adapters/BoxPlotChart.config-XmtRN2xq.cjs +0 -1
  233. package/dist/adapters/BoxPlotChart.config-Zc-JGV-W.js +0 -2
  234. package/dist/adapters/BubbleChart.config-CU_18uxb.js +0 -2
  235. package/dist/adapters/BubbleChart.config-CbhOzA6-.cjs +0 -1
  236. package/dist/adapters/CandlestickChart.config-Bwo3uaa-.js +0 -2
  237. package/dist/adapters/CandlestickChart.config-CmRBlWFv.cjs +0 -1
  238. package/dist/adapters/DataTable.config-7JNSj6qQ.js +0 -2
  239. package/dist/adapters/DataTable.config-DNxm1sYk.cjs +0 -1
  240. package/dist/adapters/DotStripChart.config-B7Dl-T1h.js +0 -2
  241. package/dist/adapters/DotStripChart.config-Co4g1fpZ.cjs +0 -1
  242. package/dist/adapters/FunnelChart.config-D1TpuGtL.cjs +0 -1
  243. package/dist/adapters/FunnelChart.config-vuZScOHQ.js +0 -2
  244. package/dist/adapters/GaugeChart.config-BMgUHKhC.cjs +0 -1
  245. package/dist/adapters/GaugeChart.config-zdpFydo6.js +0 -2
  246. package/dist/adapters/HeatMapChart.config-4XMab1zq.js +0 -2
  247. package/dist/adapters/HeatMapChart.config-C-Ns6QBq.cjs +0 -1
  248. package/dist/adapters/KpiDelta.config-BGdqsHcc.js +0 -2
  249. package/dist/adapters/KpiDelta.config-DuNxrGIi.cjs +0 -1
  250. package/dist/adapters/KpiNumber.config-CkPWpcSz.js +0 -2
  251. package/dist/adapters/KpiNumber.config-DMGmuA3i.cjs +0 -1
  252. package/dist/adapters/KpiText.config-Bvtuv8vE.js +0 -2
  253. package/dist/adapters/KpiText.config-DOMLO16U.cjs +0 -1
  254. package/dist/adapters/LineChart.config-CJmTSmZ1.js +0 -2
  255. package/dist/adapters/LineChart.config-CrkGu0aa.cjs +0 -1
  256. package/dist/adapters/MarkdownChart.config-BgY5Xc97.cjs +0 -1
  257. package/dist/adapters/MarkdownChart.config-Cm6G4Yuh.js +0 -2
  258. package/dist/adapters/MeasureProfileChart.config-BYwDo_ox.cjs +0 -1
  259. package/dist/adapters/MeasureProfileChart.config-Dt7npubZ.js +0 -2
  260. package/dist/adapters/PieChart.config-BRbPctBN.cjs +0 -1
  261. package/dist/adapters/PieChart.config-HZofeody.js +0 -2
  262. package/dist/adapters/ProportionBarChart.config-B_rTtGZr.cjs +0 -1
  263. package/dist/adapters/ProportionBarChart.config-ChCSoM0L.js +0 -2
  264. package/dist/adapters/RadarChart.config-B9OdMEib.js +0 -2
  265. package/dist/adapters/RadarChart.config-BOgPD2Kz.cjs +0 -1
  266. package/dist/adapters/RadialBarChart.config-CeP7jEbq.js +0 -2
  267. package/dist/adapters/RadialBarChart.config-sivA1Jmo.cjs +0 -1
  268. package/dist/adapters/RecordsTable.config-BInSgo-G.js +0 -2
  269. package/dist/adapters/RecordsTable.config-CVmxLdjz.cjs +0 -1
  270. package/dist/adapters/RetentionCombinedChart.config-8ry7gh6X.cjs +0 -1
  271. package/dist/adapters/RetentionCombinedChart.config-Bxtxnlcf.js +0 -2
  272. package/dist/adapters/RetentionHeatmap.config-DCtOD8dO.js +0 -2
  273. package/dist/adapters/RetentionHeatmap.config-i-LgmmIT.cjs +0 -1
  274. package/dist/adapters/SankeyChart.config-DfpeHfNT.cjs +0 -1
  275. package/dist/adapters/SankeyChart.config-hfM0ACm1.js +0 -2
  276. package/dist/adapters/ScatterChart.config-BD2vfOZ6.js +0 -2
  277. package/dist/adapters/ScatterChart.config-CdpvRueF.cjs +0 -1
  278. package/dist/adapters/SunburstChart.config-Boyt88L_.cjs +0 -1
  279. package/dist/adapters/SunburstChart.config-BvrofzMv.js +0 -2
  280. package/dist/adapters/TreeMapChart.config-DBrqwtqT.js +0 -2
  281. package/dist/adapters/TreeMapChart.config-KcRLlZAG.cjs +0 -1
  282. package/dist/adapters/WaterfallChart.config-CuCGaIl5.cjs +0 -1
  283. package/dist/adapters/WaterfallChart.config-DZ8H0V2L.js +0 -2
  284. package/dist/adapters/compiler-DG6dLFQU.cjs +0 -166
  285. package/dist/adapters/handler-CRGZ8gd2.cjs +0 -25
  286. package/dist/adapters/mcp-transport-BqdBHmXL.js +0 -730
  287. package/dist/adapters/mcp-transport-D8xZJLPD.cjs +0 -42
  288. package/dist/adapters/openai-DH9MtcLA.cjs +0 -1
  289. package/dist/adapters/utils-C1JpSDOX.cjs +0 -128
  290. package/dist/client/chunks/DashboardEditModal-BliiIHcI.js.map +0 -1
  291. package/dist/client/chunks/chart-activity-grid-CJzxC18G.js.map +0 -1
  292. package/dist/client/chunks/chart-markdown-yxN_xBP9.js.map +0 -1
  293. package/dist/client/chunks/charts-loader-tCSbqT7H.js +0 -87
  294. package/dist/client/chunks/nl-NL-B9VnaVAm.js.map +0 -1
  295. package/dist/server/openai-BBe1XbZd.cjs +0 -1
@@ -1,35 +1,35 @@
1
- import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, N as m, O as h, P as g, Q as _, R as v, S as y, T as b, U as ee, V as te, W as x, X as ne, Y as re, Z as S, at as ie, et as C, it as ae, j as oe, nt as se, q as w, rt as T, tt as ce, w as le, z as ue } from "./utils-BhlkVCzZ.js";
1
+ import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, N as m, P as h, Q as g, R as _, S as v, T as y, U as b, V as ee, W as te, X as x, Y as ne, Z as re, et as ie, it as ae, j as oe, k as S, nt as C, q as se, rt as ce, tt as le, w as ue, x as de, z as w } from "./utils-C_RKaP0n.js";
2
2
  //#region node_modules/drizzle-orm/sql/expressions/select.js
3
- function de(e) {
4
- return T`${e} asc`;
5
- }
6
3
  function fe(e) {
7
- return T`${e} desc`;
4
+ return C`${e} asc`;
5
+ }
6
+ function pe(e) {
7
+ return C`${e} desc`;
8
8
  }
9
9
  //#endregion
10
10
  //#region node_modules/drizzle-orm/sql/functions/aggregate.js
11
- function pe(e) {
12
- return T`count(${e || T.raw("*")})`.mapWith(Number);
11
+ function T(e) {
12
+ return C`count(${e || C.raw("*")})`.mapWith(Number);
13
13
  }
14
14
  function me(e) {
15
- return T`count(distinct ${e})`.mapWith(Number);
15
+ return C`count(distinct ${e})`.mapWith(Number);
16
16
  }
17
17
  function E(e) {
18
- return T`sum(${e})`.mapWith(String);
18
+ return C`sum(${e})`.mapWith(String);
19
19
  }
20
20
  function D(e) {
21
- return T`max(${e})`.mapWith(ie(e, ae) ? e : String);
21
+ return C`max(${e})`.mapWith(ae(e, ce) ? e : String);
22
22
  }
23
23
  function he(e) {
24
- return T`min(${e})`.mapWith(ie(e, ae) ? e : String);
24
+ return C`min(${e})`.mapWith(ae(e, ce) ? e : String);
25
25
  }
26
26
  //#endregion
27
27
  //#region src/server/adapters/window-function-builder.ts
28
28
  function ge(e) {
29
- return e && e.length > 0 ? T`PARTITION BY ${T.join(e, T`, `)}` : T``;
29
+ return e && e.length > 0 ? C`PARTITION BY ${C.join(e, C`, `)}` : C``;
30
30
  }
31
31
  function _e(e) {
32
- return e && e.length > 0 ? T`ORDER BY ${T.join(e.map((e) => e.direction === "desc" ? T`${e.field} DESC` : T`${e.field} ASC`), T`, `)}` : T``;
32
+ return e && e.length > 0 ? C`ORDER BY ${C.join(e.map((e) => e.direction === "desc" ? C`${e.field} DESC` : C`${e.field} ASC`), C`, `)}` : C``;
33
33
  }
34
34
  function ve(e) {
35
35
  return e === "unbounded" ? "UNBOUNDED PRECEDING" : typeof e == "number" ? `${e} PRECEDING` : "CURRENT ROW";
@@ -38,19 +38,19 @@ function ye(e) {
38
38
  return e === "unbounded" ? "UNBOUNDED FOLLOWING" : e === "current" ? "CURRENT ROW" : typeof e == "number" ? `${e} FOLLOWING` : "CURRENT ROW";
39
39
  }
40
40
  function be(e) {
41
- if (!e) return T``;
41
+ if (!e) return C``;
42
42
  let t = e.type.toUpperCase(), n = ve(e.start), r = ye(e.end);
43
- return T`${T.raw(t)} BETWEEN ${T.raw(n)} AND ${T.raw(r)}`;
43
+ return C`${C.raw(t)} BETWEEN ${C.raw(n)} AND ${C.raw(r)}`;
44
44
  }
45
45
  function xe(e, t, n) {
46
46
  let r = [];
47
47
  e && e.length > 0 && r.push(ge(e)), t && t.length > 0 && r.push(_e(t)), n?.frame && r.push(be(n.frame));
48
- let i = r.length > 0 ? T.join(r, T` `) : T``;
49
- return T`OVER (${i})`;
48
+ let i = r.length > 0 ? C.join(r, C` `) : C``;
49
+ return C`OVER (${i})`;
50
50
  }
51
51
  function Se(e, t, n, r) {
52
- let i = r?.defaultValue === void 0 ? T`` : T`, ${r.defaultValue}`;
53
- return T`${T.raw(e)}(${t}, ${r?.offset ?? 1}${i}) ${n}`;
52
+ let i = r?.defaultValue === void 0 ? C`` : C`, ${r.defaultValue}`;
53
+ return C`${C.raw(e)}(${t}, ${r?.offset ?? 1}${i}) ${n}`;
54
54
  }
55
55
  var Ce = {
56
56
  rank: "RANK",
@@ -64,11 +64,11 @@ var Ce = {
64
64
  };
65
65
  function Te(e, t, n, r) {
66
66
  if (e === "lag" || e === "lead") return Se(e === "lag" ? "LAG" : "LEAD", t, n, r);
67
- if (e === "ntile") return T`NTILE(${r?.nTile ?? 4}) ${n}`;
67
+ if (e === "ntile") return C`NTILE(${r?.nTile ?? 4}) ${n}`;
68
68
  let i = Ce[e];
69
- if (i) return T`${T.raw(i)}() ${n}`;
69
+ if (i) return C`${C.raw(i)}() ${n}`;
70
70
  let a = we[e];
71
- if (a) return T`${T.raw(a)}(${t}) ${n}`;
71
+ if (a) return C`${C.raw(a)}(${t}) ${n}`;
72
72
  throw Error(`Unsupported window function: ${e}`);
73
73
  }
74
74
  //#endregion
@@ -78,13 +78,13 @@ var O = class {
78
78
  return e;
79
79
  }
80
80
  nullToZero(e) {
81
- return T`COALESCE(${e}, 0)`;
81
+ return C`COALESCE(${e}, 0)`;
82
82
  }
83
83
  caseInsensitiveLike(e, t, n) {
84
- return n ? T`${e} NOT ILIKE ${t}` : T`${e} ILIKE ${t}`;
84
+ return n ? C`${e} NOT ILIKE ${t}` : C`${e} ILIKE ${t}`;
85
85
  }
86
86
  regexCondition(e, t, n) {
87
- return n ? T`${e} !~* ${t}` : T`${e} ~* ${t}`;
87
+ return n ? C`${e} !~* ${t}` : C`${e} ~* ${t}`;
88
88
  }
89
89
  buildStringCondition(e, t, n) {
90
90
  switch (t) {
@@ -92,8 +92,8 @@ var O = class {
92
92
  case "notContains": return this.caseInsensitiveLike(e, `%${n}%`, !0);
93
93
  case "startsWith": return this.caseInsensitiveLike(e, `${n}%`, !1);
94
94
  case "endsWith": return this.caseInsensitiveLike(e, `%${n}`, !1);
95
- case "like": return T`${e} LIKE ${n}`;
96
- case "notLike": return T`${e} NOT LIKE ${n}`;
95
+ case "like": return C`${e} LIKE ${n}`;
96
+ case "notLike": return C`${e} NOT LIKE ${n}`;
97
97
  case "ilike": return this.caseInsensitiveLike(e, n, !1);
98
98
  case "regex": return this.regexCondition(e, n, !1);
99
99
  case "notRegex": return this.regexCondition(e, n, !0);
@@ -102,17 +102,17 @@ var O = class {
102
102
  }
103
103
  buildConditionalAggregation(e, t, n) {
104
104
  let r = e.toUpperCase();
105
- return e === "count" && !t ? T`${T.raw(r)}(CASE WHEN ${n} THEN 1 END)` : T`${T.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
105
+ return e === "count" && !t ? C`${C.raw(r)}(CASE WHEN ${n} THEN 1 END)` : C`${C.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
106
106
  }
107
107
  buildAvg(e) {
108
- return this.nullToZero(T`AVG(${e})`);
108
+ return this.nullToZero(C`AVG(${e})`);
109
109
  }
110
110
  buildCaseWhen(e, t) {
111
- let n = e.map((e) => T`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => T`${e} ${t}`);
112
- return t === void 0 ? T`CASE ${n} END` : T`CASE ${n} ELSE ${t} END`;
111
+ let n = e.map((e) => C`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => C`${e} ${t}`);
112
+ return t === void 0 ? C`CASE ${n} END` : C`CASE ${n} ELSE ${t} END`;
113
113
  }
114
114
  buildBooleanLiteral(e) {
115
- return e ? T`TRUE` : T`FALSE`;
115
+ return e ? C`TRUE` : C`FALSE`;
116
116
  }
117
117
  convertFilterValue(e) {
118
118
  return e;
@@ -128,11 +128,11 @@ var O = class {
128
128
  }
129
129
  buildStddev(e, t = !1) {
130
130
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
131
- return this.nullToZero(T`${T.raw(n)}(${e})`);
131
+ return this.nullToZero(C`${C.raw(n)}(${e})`);
132
132
  }
133
133
  buildVariance(e, t = !1) {
134
134
  let n = t ? "VAR_SAMP" : "VAR_POP";
135
- return this.nullToZero(T`${T.raw(n)}(${e})`);
135
+ return this.nullToZero(C`${C.raw(n)}(${e})`);
136
136
  }
137
137
  buildWindowFunction(e, t, n, r, i) {
138
138
  return Te(e, t, xe(n, r, i), i);
@@ -179,56 +179,56 @@ var O = class {
179
179
  let t = this.parseISODuration(e), n = [];
180
180
  t.years && n.push(`${t.years} years`), t.months && n.push(`${t.months} months`), t.days && n.push(`${t.days} days`), t.hours && n.push(`${t.hours} hours`), t.minutes && n.push(`${t.minutes} minutes`), t.seconds && n.push(`${t.seconds} seconds`);
181
181
  let r = n.join(" ") || "0 seconds";
182
- return T`INTERVAL '${T.raw(r)}'`;
182
+ return C`INTERVAL '${C.raw(r)}'`;
183
183
  }
184
184
  buildTimeDifferenceSeconds(e, t) {
185
- return T`EXTRACT(EPOCH FROM (${e} - ${t}))`;
185
+ return C`EXTRACT(EPOCH FROM (${e} - ${t}))`;
186
186
  }
187
187
  buildDateAddInterval(e, t) {
188
188
  let n = this.buildIntervalFromISO(t);
189
- return T`(${e} + ${n})`;
189
+ return C`(${e} + ${n})`;
190
190
  }
191
191
  buildConditionalAggregation(e, t, n) {
192
192
  let r = e.toUpperCase();
193
- return e === "count" && !t ? T`COUNT(*) FILTER (WHERE ${n})` : T`${T.raw(r)}(${t}) FILTER (WHERE ${n})`;
193
+ return e === "count" && !t ? C`COUNT(*) FILTER (WHERE ${n})` : C`${C.raw(r)}(${t}) FILTER (WHERE ${n})`;
194
194
  }
195
195
  buildDateDiffPeriods(e, t, n) {
196
196
  switch (n) {
197
- case "day": return T`(${t}::date - ${e}::date)`;
198
- case "week": return T`FLOOR((${t}::date - ${e}::date) / 7)`;
199
- case "month": return T`(EXTRACT(YEAR FROM AGE(${t}::timestamp, ${e}::timestamp)) * 12 + EXTRACT(MONTH FROM AGE(${t}::timestamp, ${e}::timestamp)))::integer`;
197
+ case "day": return C`(${t}::date - ${e}::date)`;
198
+ case "week": return C`FLOOR((${t}::date - ${e}::date) / 7)`;
199
+ case "month": return C`(EXTRACT(YEAR FROM AGE(${t}::timestamp, ${e}::timestamp)) * 12 + EXTRACT(MONTH FROM AGE(${t}::timestamp, ${e}::timestamp)))::integer`;
200
200
  default: throw Error(`Unsupported date diff unit: ${n}`);
201
201
  }
202
202
  }
203
203
  buildPeriodSeriesSubquery(e) {
204
- return T`(SELECT generate_series(0, ${e}) as period_number) p`;
204
+ return C`(SELECT generate_series(0, ${e}) as period_number) p`;
205
205
  }
206
206
  buildTimeDimension(e, t) {
207
207
  switch (e) {
208
- case "year": return T`DATE_TRUNC('year', ${t}::timestamp)`;
209
- case "quarter": return T`DATE_TRUNC('quarter', ${t}::timestamp)`;
210
- case "month": return T`DATE_TRUNC('month', ${t}::timestamp)`;
211
- case "week": return T`DATE_TRUNC('week', ${t}::timestamp)`;
212
- case "day": return T`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
213
- case "hour": return T`DATE_TRUNC('hour', ${t}::timestamp)`;
214
- case "minute": return T`DATE_TRUNC('minute', ${t}::timestamp)`;
215
- case "second": return T`DATE_TRUNC('second', ${t}::timestamp)`;
208
+ case "year": return C`DATE_TRUNC('year', ${t}::timestamp)`;
209
+ case "quarter": return C`DATE_TRUNC('quarter', ${t}::timestamp)`;
210
+ case "month": return C`DATE_TRUNC('month', ${t}::timestamp)`;
211
+ case "week": return C`DATE_TRUNC('week', ${t}::timestamp)`;
212
+ case "day": return C`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
213
+ case "hour": return C`DATE_TRUNC('hour', ${t}::timestamp)`;
214
+ case "minute": return C`DATE_TRUNC('minute', ${t}::timestamp)`;
215
+ case "second": return C`DATE_TRUNC('second', ${t}::timestamp)`;
216
216
  default: return t;
217
217
  }
218
218
  }
219
219
  castToType(e, t) {
220
220
  switch (t) {
221
- case "timestamp": return T`${e}::timestamp`;
222
- case "decimal": return T`${e}::decimal`;
223
- case "integer": return T`${e}::integer`;
221
+ case "timestamp": return C`${e}::timestamp`;
222
+ case "decimal": return C`${e}::decimal`;
223
+ case "integer": return C`${e}::integer`;
224
224
  default: throw Error(`Unsupported cast type: ${t}`);
225
225
  }
226
226
  }
227
227
  tryCastToType(e, t) {
228
228
  switch (t) {
229
- case "timestamp": return T`CASE WHEN ${e} ~ ${this.timestampTryCastPattern()} THEN ${e}::timestamp ELSE NULL END`;
230
- case "decimal": return T`CASE WHEN ${e} ~ ${this.decimalTryCastPattern()} THEN ${e}::decimal ELSE NULL END`;
231
- case "integer": return T`CASE WHEN ${e} ~ ${this.integerTryCastPattern()} THEN ${e}::integer ELSE NULL END`;
229
+ case "timestamp": return C`CASE WHEN ${e} ~ ${this.timestampTryCastPattern()} THEN ${e}::timestamp ELSE NULL END`;
230
+ case "decimal": return C`CASE WHEN ${e} ~ ${this.decimalTryCastPattern()} THEN ${e}::decimal ELSE NULL END`;
231
+ case "integer": return C`CASE WHEN ${e} ~ ${this.integerTryCastPattern()} THEN ${e}::integer ELSE NULL END`;
232
232
  default: throw Error(`Unsupported cast type: ${t}`);
233
233
  }
234
234
  }
@@ -242,7 +242,7 @@ var O = class {
242
242
  }
243
243
  buildPercentile(e, t) {
244
244
  let n = t / 100;
245
- return T`PERCENTILE_CONT(${n}) WITHIN GROUP (ORDER BY ${e})`;
245
+ return C`PERCENTILE_CONT(${n}) WITHIN GROUP (ORDER BY ${e})`;
246
246
  }
247
247
  }, De = class extends O {
248
248
  getEngineType() {
@@ -250,21 +250,21 @@ var O = class {
250
250
  }
251
251
  buildIntervalFromISO(e) {
252
252
  let t = this.durationToSeconds(e);
253
- return T`${t}`;
253
+ return C`${t}`;
254
254
  }
255
255
  buildTimeDifferenceSeconds(e, t) {
256
- return T`TIMESTAMPDIFF(SECOND, ${t}, ${e})`;
256
+ return C`TIMESTAMPDIFF(SECOND, ${t}, ${e})`;
257
257
  }
258
258
  buildDateAddInterval(e, t) {
259
259
  let n = this.parseISODuration(t), r = e;
260
- return n.years && (r = T`DATE_ADD(${r}, INTERVAL ${n.years} YEAR)`), n.months && (r = T`DATE_ADD(${r}, INTERVAL ${n.months} MONTH)`), n.days && (r = T`DATE_ADD(${r}, INTERVAL ${n.days} DAY)`), n.hours && (r = T`DATE_ADD(${r}, INTERVAL ${n.hours} HOUR)`), n.minutes && (r = T`DATE_ADD(${r}, INTERVAL ${n.minutes} MINUTE)`), n.seconds && (r = T`DATE_ADD(${r}, INTERVAL ${n.seconds} SECOND)`), r;
260
+ return n.years && (r = C`DATE_ADD(${r}, INTERVAL ${n.years} YEAR)`), n.months && (r = C`DATE_ADD(${r}, INTERVAL ${n.months} MONTH)`), n.days && (r = C`DATE_ADD(${r}, INTERVAL ${n.days} DAY)`), n.hours && (r = C`DATE_ADD(${r}, INTERVAL ${n.hours} HOUR)`), n.minutes && (r = C`DATE_ADD(${r}, INTERVAL ${n.minutes} MINUTE)`), n.seconds && (r = C`DATE_ADD(${r}, INTERVAL ${n.seconds} SECOND)`), r;
261
261
  }
262
262
  buildDateDiffPeriods(e, t, n) {
263
263
  let r = n.toUpperCase();
264
- return T`TIMESTAMPDIFF(${T.raw(r)}, ${e}, ${t})`;
264
+ return C`TIMESTAMPDIFF(${C.raw(r)}, ${e}, ${t})`;
265
265
  }
266
266
  buildPeriodSeriesSubquery(e) {
267
- return T`(
267
+ return C`(
268
268
  WITH RECURSIVE periods(period_number) AS (
269
269
  SELECT 0
270
270
  UNION ALL
@@ -285,39 +285,39 @@ var O = class {
285
285
  second: "%Y-%m-%d %H:%i:%s"
286
286
  };
287
287
  switch (e) {
288
- case "quarter": return T`DATE_ADD(MAKEDATE(YEAR(${t}), 1), INTERVAL (QUARTER(${t}) - 1) * 3 MONTH)`;
289
- case "week": return T`STR_TO_DATE(DATE_FORMAT(DATE_SUB(${t}, INTERVAL WEEKDAY(${t}) DAY), '%Y-%m-%d 00:00:00'), '%Y-%m-%d %H:%i:%s')`;
288
+ case "quarter": return C`DATE_ADD(MAKEDATE(YEAR(${t}), 1), INTERVAL (QUARTER(${t}) - 1) * 3 MONTH)`;
289
+ case "week": return C`STR_TO_DATE(DATE_FORMAT(DATE_SUB(${t}, INTERVAL WEEKDAY(${t}) DAY), '%Y-%m-%d 00:00:00'), '%Y-%m-%d %H:%i:%s')`;
290
290
  default: {
291
291
  let r = n[e];
292
- return r ? T`STR_TO_DATE(DATE_FORMAT(${t}, ${r}), '%Y-%m-%d %H:%i:%s')` : t;
292
+ return r ? C`STR_TO_DATE(DATE_FORMAT(${t}, ${r}), '%Y-%m-%d %H:%i:%s')` : t;
293
293
  }
294
294
  }
295
295
  }
296
296
  caseInsensitiveLike(e, t, n) {
297
297
  let r = t.toLowerCase();
298
- return n ? T`LOWER(${e}) NOT LIKE ${r}` : T`LOWER(${e}) LIKE ${r}`;
298
+ return n ? C`LOWER(${e}) NOT LIKE ${r}` : C`LOWER(${e}) LIKE ${r}`;
299
299
  }
300
300
  regexCondition(e, t, n) {
301
- return n ? T`${e} NOT REGEXP ${t}` : T`${e} REGEXP ${t}`;
301
+ return n ? C`${e} NOT REGEXP ${t}` : C`${e} REGEXP ${t}`;
302
302
  }
303
303
  castToType(e, t) {
304
304
  switch (t) {
305
- case "timestamp": return T`CAST(${e} AS DATETIME)`;
306
- case "decimal": return T`CAST(${e} AS DECIMAL(10,2))`;
307
- case "integer": return T`CAST(${e} AS SIGNED INTEGER)`;
305
+ case "timestamp": return C`CAST(${e} AS DATETIME)`;
306
+ case "decimal": return C`CAST(${e} AS DECIMAL(10,2))`;
307
+ case "integer": return C`CAST(${e} AS SIGNED INTEGER)`;
308
308
  default: throw Error(`Unsupported cast type: ${t}`);
309
309
  }
310
310
  }
311
311
  tryCastToType(e, t) {
312
312
  switch (t) {
313
- case "timestamp": return T`CASE WHEN ${e} REGEXP ${this.timestampTryCastPattern()} THEN CAST(${e} AS DATETIME) ELSE NULL END`;
314
- case "decimal": return T`CASE WHEN ${e} REGEXP ${this.decimalTryCastPattern()} THEN CAST(${e} AS DECIMAL(10,2)) ELSE NULL END`;
315
- case "integer": return T`CASE WHEN ${e} REGEXP ${this.integerTryCastPattern()} THEN CAST(${e} AS SIGNED INTEGER) ELSE NULL END`;
313
+ case "timestamp": return C`CASE WHEN ${e} REGEXP ${this.timestampTryCastPattern()} THEN CAST(${e} AS DATETIME) ELSE NULL END`;
314
+ case "decimal": return C`CASE WHEN ${e} REGEXP ${this.decimalTryCastPattern()} THEN CAST(${e} AS DECIMAL(10,2)) ELSE NULL END`;
315
+ case "integer": return C`CASE WHEN ${e} REGEXP ${this.integerTryCastPattern()} THEN CAST(${e} AS SIGNED INTEGER) ELSE NULL END`;
316
316
  default: throw Error(`Unsupported cast type: ${t}`);
317
317
  }
318
318
  }
319
319
  nullToZero(e) {
320
- return T`IFNULL(${e}, 0)`;
320
+ return C`IFNULL(${e}, 0)`;
321
321
  }
322
322
  getCapabilities() {
323
323
  return {
@@ -336,25 +336,25 @@ var O = class {
336
336
  }
337
337
  buildIntervalFromISO(e) {
338
338
  let t = this.durationToSeconds(e);
339
- return T`${t}`;
339
+ return C`${t}`;
340
340
  }
341
341
  buildTimeDifferenceSeconds(e, t) {
342
- return T`(${e} - ${t})`;
342
+ return C`(${e} - ${t})`;
343
343
  }
344
344
  buildDateAddInterval(e, t) {
345
345
  let n = this.durationToSeconds(t);
346
- return T`(${e} + ${n})`;
346
+ return C`(${e} + ${n})`;
347
347
  }
348
348
  buildDateDiffPeriods(e, t, n) {
349
349
  switch (n) {
350
- case "day": return T`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) AS INTEGER)`;
351
- case "week": return T`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) / 7 AS INTEGER)`;
352
- case "month": return T`((CAST(strftime('%Y', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%Y', datetime(${e}, 'unixepoch')) AS INTEGER)) * 12 + (CAST(strftime('%m', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%m', datetime(${e}, 'unixepoch')) AS INTEGER)))`;
350
+ case "day": return C`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) AS INTEGER)`;
351
+ case "week": return C`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) / 7 AS INTEGER)`;
352
+ case "month": return C`((CAST(strftime('%Y', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%Y', datetime(${e}, 'unixepoch')) AS INTEGER)) * 12 + (CAST(strftime('%m', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%m', datetime(${e}, 'unixepoch')) AS INTEGER)))`;
353
353
  default: throw Error(`Unsupported date diff unit for SQLite: ${n}`);
354
354
  }
355
355
  }
356
356
  buildPeriodSeriesSubquery(e) {
357
- return T`(
357
+ return C`(
358
358
  WITH RECURSIVE periods(period_number) AS (
359
359
  SELECT 0
360
360
  UNION ALL
@@ -365,62 +365,62 @@ var O = class {
365
365
  }
366
366
  buildTimeDimension(e, t) {
367
367
  switch (e) {
368
- case "year": return T`datetime(${t}, 'unixepoch', 'start of year')`;
368
+ case "year": return C`datetime(${t}, 'unixepoch', 'start of year')`;
369
369
  case "quarter": {
370
- let e = T`datetime(${t}, 'unixepoch')`;
371
- return T`datetime(${e}, 'start of year',
370
+ let e = C`datetime(${t}, 'unixepoch')`;
371
+ return C`datetime(${e}, 'start of year',
372
372
  '+' || (((CAST(strftime('%m', ${e}) AS INTEGER) - 1) / 3) * 3) || ' months')`;
373
373
  }
374
- case "month": return T`datetime(${t}, 'unixepoch', 'start of month')`;
375
- case "week": return T`date(datetime(${t}, 'unixepoch'), 'weekday 1', '-6 days')`;
376
- case "day": return T`datetime(${t}, 'unixepoch', 'start of day')`;
374
+ case "month": return C`datetime(${t}, 'unixepoch', 'start of month')`;
375
+ case "week": return C`date(datetime(${t}, 'unixepoch'), 'weekday 1', '-6 days')`;
376
+ case "day": return C`datetime(${t}, 'unixepoch', 'start of day')`;
377
377
  case "hour": {
378
- let e = T`datetime(${t}, 'unixepoch')`;
379
- return T`datetime(strftime('%Y-%m-%d %H:00:00', ${e}))`;
378
+ let e = C`datetime(${t}, 'unixepoch')`;
379
+ return C`datetime(strftime('%Y-%m-%d %H:00:00', ${e}))`;
380
380
  }
381
381
  case "minute": {
382
- let e = T`datetime(${t}, 'unixepoch')`;
383
- return T`datetime(strftime('%Y-%m-%d %H:%M:00', ${e}))`;
382
+ let e = C`datetime(${t}, 'unixepoch')`;
383
+ return C`datetime(strftime('%Y-%m-%d %H:%M:00', ${e}))`;
384
384
  }
385
385
  case "second": {
386
- let e = T`datetime(${t}, 'unixepoch')`;
387
- return T`datetime(strftime('%Y-%m-%d %H:%M:%S', ${e}))`;
386
+ let e = C`datetime(${t}, 'unixepoch')`;
387
+ return C`datetime(strftime('%Y-%m-%d %H:%M:%S', ${e}))`;
388
388
  }
389
- default: return T`datetime(${t}, 'unixepoch')`;
389
+ default: return C`datetime(${t}, 'unixepoch')`;
390
390
  }
391
391
  }
392
392
  caseInsensitiveLike(e, t, n) {
393
393
  let r = t.toLowerCase();
394
- return n ? T`LOWER(${e}) NOT LIKE ${r}` : T`LOWER(${e}) LIKE ${r}`;
394
+ return n ? C`LOWER(${e}) NOT LIKE ${r}` : C`LOWER(${e}) LIKE ${r}`;
395
395
  }
396
396
  regexCondition(e, t, n) {
397
- return n ? T`${e} NOT GLOB ${t}` : T`${e} GLOB ${t}`;
397
+ return n ? C`${e} NOT GLOB ${t}` : C`${e} GLOB ${t}`;
398
398
  }
399
399
  castToType(e, t) {
400
400
  switch (t) {
401
- case "timestamp": return T`datetime(${e} / 1000, 'unixepoch')`;
402
- case "decimal": return T`CAST(${e} AS REAL)`;
403
- case "integer": return T`CAST(${e} AS INTEGER)`;
401
+ case "timestamp": return C`datetime(${e} / 1000, 'unixepoch')`;
402
+ case "decimal": return C`CAST(${e} AS REAL)`;
403
+ case "integer": return C`CAST(${e} AS INTEGER)`;
404
404
  default: throw Error(`Unsupported cast type: ${t}`);
405
405
  }
406
406
  }
407
407
  tryCastToType(e, t) {
408
408
  switch (t) {
409
- case "timestamp": return T`CASE WHEN TRIM(${e}) = '' OR TRIM(${e}) GLOB '*[^0-9-]*' THEN NULL ELSE datetime(${e} / 1000, 'unixepoch') END`;
410
- case "decimal": return T`CASE WHEN TRIM(${e}) = '' OR TRIM(${e}) GLOB '*[^0-9.+-]*' THEN NULL ELSE CAST(${e} AS REAL) END`;
411
- case "integer": return T`CASE WHEN TRIM(${e}) = '' OR TRIM(${e}) GLOB '*[^0-9+-]*' THEN NULL ELSE CAST(${e} AS INTEGER) END`;
409
+ case "timestamp": return C`CASE WHEN TRIM(${e}) = '' OR TRIM(${e}) GLOB '*[^0-9-]*' THEN NULL ELSE datetime(${e} / 1000, 'unixepoch') END`;
410
+ case "decimal": return C`CASE WHEN TRIM(${e}) = '' OR TRIM(${e}) GLOB '*[^0-9.+-]*' THEN NULL ELSE CAST(${e} AS REAL) END`;
411
+ case "integer": return C`CASE WHEN TRIM(${e}) = '' OR TRIM(${e}) GLOB '*[^0-9+-]*' THEN NULL ELSE CAST(${e} AS INTEGER) END`;
412
412
  default: throw Error(`Unsupported cast type: ${t}`);
413
413
  }
414
414
  }
415
415
  nullToZero(e) {
416
- return T`IFNULL(${e}, 0)`;
416
+ return C`IFNULL(${e}, 0)`;
417
417
  }
418
418
  buildCaseWhen(e, t) {
419
- let n = e.map((e) => e.then && typeof e.then == "object" && (e.then.queryChunks || e.then._ || e.then.sql) ? T`WHEN ${e.when} THEN ${T.raw("(")}${e.then}${T.raw(")")}` : T`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => T`${e} ${t}`);
420
- return t === void 0 ? T`CASE ${n} END` : t && typeof t == "object" && (t.queryChunks || t._ || t.sql) ? T`CASE ${n} ELSE ${T.raw("(")}${t}${T.raw(")")} END` : T`CASE ${n} ELSE ${t} END`;
419
+ let n = e.map((e) => e.then && typeof e.then == "object" && (e.then.queryChunks || e.then._ || e.then.sql) ? C`WHEN ${e.when} THEN ${C.raw("(")}${e.then}${C.raw(")")}` : C`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => C`${e} ${t}`);
420
+ return t === void 0 ? C`CASE ${n} END` : t && typeof t == "object" && (t.queryChunks || t._ || t.sql) ? C`CASE ${n} ELSE ${C.raw("(")}${t}${C.raw(")")} END` : C`CASE ${n} ELSE ${t} END`;
421
421
  }
422
422
  buildBooleanLiteral(e) {
423
- return e ? T`1` : T`0`;
423
+ return e ? C`1` : C`0`;
424
424
  }
425
425
  preprocessCalculatedTemplate(e) {
426
426
  return e.length > 1e3 ? e : e.replace(/(\{[^}]+\})\s*\/\s*/g, (e, t) => `${t.replace(/\{([^}]+)\}/, "CAST({$1} AS REAL)")} / `);
@@ -468,54 +468,54 @@ var O = class {
468
468
  let t = this.parseISODuration(e), n = [];
469
469
  t.years && n.push(`${t.years} years`), t.months && n.push(`${t.months} months`), t.days && n.push(`${t.days} days`), t.hours && n.push(`${t.hours} hours`), t.minutes && n.push(`${t.minutes} minutes`), t.seconds && n.push(`${t.seconds} seconds`);
470
470
  let r = n.join(" ") || "0 seconds";
471
- return T`INTERVAL '${T.raw(r)}'`;
471
+ return C`INTERVAL '${C.raw(r)}'`;
472
472
  }
473
473
  buildTimeDifferenceSeconds(e, t) {
474
- return T`(EPOCH(${e}) - EPOCH(${t}))`;
474
+ return C`(EPOCH(${e}) - EPOCH(${t}))`;
475
475
  }
476
476
  buildDateAddInterval(e, t) {
477
477
  let n = this.buildIntervalFromISO(t);
478
- return T`(${e} + ${n})`;
478
+ return C`(${e} + ${n})`;
479
479
  }
480
480
  buildConditionalAggregation(e, t, n) {
481
481
  let r = e.toUpperCase();
482
- return e === "count" && !t ? T`COUNT(*) FILTER (WHERE ${n})` : T`${T.raw(r)}(${t}) FILTER (WHERE ${n})`;
482
+ return e === "count" && !t ? C`COUNT(*) FILTER (WHERE ${n})` : C`${C.raw(r)}(${t}) FILTER (WHERE ${n})`;
483
483
  }
484
484
  buildDateDiffPeriods(e, t, n) {
485
- return T`DATE_DIFF('${T.raw(n)}', ${e}::timestamp, ${t}::timestamp)`;
485
+ return C`DATE_DIFF('${C.raw(n)}', ${e}::timestamp, ${t}::timestamp)`;
486
486
  }
487
487
  buildPeriodSeriesSubquery(e) {
488
- return T`(SELECT UNNEST(generate_series(0, ${e})) as period_number) p`;
488
+ return C`(SELECT UNNEST(generate_series(0, ${e})) as period_number) p`;
489
489
  }
490
490
  buildTimeDimension(e, t) {
491
491
  switch (e) {
492
- case "year": return T`DATE_TRUNC('year', ${t}::timestamp)`;
493
- case "quarter": return T`DATE_TRUNC('quarter', ${t}::timestamp)`;
494
- case "month": return T`DATE_TRUNC('month', ${t}::timestamp)`;
495
- case "week": return T`DATE_TRUNC('week', ${t}::timestamp)`;
496
- case "day": return T`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
497
- case "hour": return T`DATE_TRUNC('hour', ${t}::timestamp)`;
498
- case "minute": return T`DATE_TRUNC('minute', ${t}::timestamp)`;
499
- case "second": return T`DATE_TRUNC('second', ${t}::timestamp)`;
492
+ case "year": return C`DATE_TRUNC('year', ${t}::timestamp)`;
493
+ case "quarter": return C`DATE_TRUNC('quarter', ${t}::timestamp)`;
494
+ case "month": return C`DATE_TRUNC('month', ${t}::timestamp)`;
495
+ case "week": return C`DATE_TRUNC('week', ${t}::timestamp)`;
496
+ case "day": return C`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
497
+ case "hour": return C`DATE_TRUNC('hour', ${t}::timestamp)`;
498
+ case "minute": return C`DATE_TRUNC('minute', ${t}::timestamp)`;
499
+ case "second": return C`DATE_TRUNC('second', ${t}::timestamp)`;
500
500
  default: return t;
501
501
  }
502
502
  }
503
503
  regexCondition(e, t, n) {
504
- return n ? T`NOT regexp_matches(${e}, ${t})` : T`regexp_matches(${e}, ${t})`;
504
+ return n ? C`NOT regexp_matches(${e}, ${t})` : C`regexp_matches(${e}, ${t})`;
505
505
  }
506
506
  castToType(e, t) {
507
507
  switch (t) {
508
- case "timestamp": return T`${e}::timestamp`;
509
- case "decimal": return T`${e}::decimal`;
510
- case "integer": return T`${e}::integer`;
508
+ case "timestamp": return C`${e}::timestamp`;
509
+ case "decimal": return C`${e}::decimal`;
510
+ case "integer": return C`${e}::integer`;
511
511
  default: throw Error(`Unsupported cast type: ${t}`);
512
512
  }
513
513
  }
514
514
  tryCastToType(e, t) {
515
515
  switch (t) {
516
- case "timestamp": return T`TRY_CAST(${e} AS timestamp)`;
517
- case "decimal": return T`TRY_CAST(${e} AS decimal)`;
518
- case "integer": return T`TRY_CAST(${e} AS integer)`;
516
+ case "timestamp": return C`TRY_CAST(${e} AS timestamp)`;
517
+ case "decimal": return C`TRY_CAST(${e} AS decimal)`;
518
+ case "integer": return C`TRY_CAST(${e} AS integer)`;
519
519
  default: throw Error(`Unsupported cast type: ${t}`);
520
520
  }
521
521
  }
@@ -529,7 +529,7 @@ var O = class {
529
529
  }
530
530
  buildPercentile(e, t) {
531
531
  let n = t / 100;
532
- return T`QUANTILE_CONT(${e}, ${n})`;
532
+ return C`QUANTILE_CONT(${e}, ${n})`;
533
533
  }
534
534
  }, je = class extends O {
535
535
  getEngineType() {
@@ -537,56 +537,56 @@ var O = class {
537
537
  }
538
538
  buildIntervalFromISO(e) {
539
539
  let t = this.parseISODuration(e), n = [];
540
- if (t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), n.length === 0) return T`INTERVAL 0 SECOND`;
541
- if (n.length === 1) return T`INTERVAL ${T.raw(n[0])}`;
540
+ if (t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), n.length === 0) return C`INTERVAL 0 SECOND`;
541
+ if (n.length === 1) return C`INTERVAL ${C.raw(n[0])}`;
542
542
  let r = n.map((e) => `INTERVAL ${e}`);
543
- return T`(${T.raw(r.join(" + "))})`;
543
+ return C`(${C.raw(r.join(" + "))})`;
544
544
  }
545
545
  buildTimeDifferenceSeconds(e, t) {
546
- return T`EXTRACT(EPOCH FROM TIMESTAMP_DIFF(${e}, ${t}))`;
546
+ return C`EXTRACT(EPOCH FROM TIMESTAMP_DIFF(${e}, ${t}))`;
547
547
  }
548
548
  buildDateAddInterval(e, t) {
549
549
  let n = this.buildIntervalFromISO(t);
550
- return T`(${e} + ${n})`;
550
+ return C`(${e} + ${n})`;
551
551
  }
552
552
  buildDateDiffPeriods(e, t, n) {
553
- return T`DATE_DIFF('${T.raw(n)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
553
+ return C`DATE_DIFF('${C.raw(n)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
554
554
  }
555
555
  buildPeriodSeriesSubquery(e) {
556
- return T`(SELECT number as period_number FROM numbers(${e + 1})) p`;
556
+ return C`(SELECT number as period_number FROM numbers(${e + 1})) p`;
557
557
  }
558
558
  buildTimeDimension(e, t) {
559
559
  switch (e) {
560
- case "year": return T`DATE_TRUNC(YEAR, ${t}::TIMESTAMP)`;
561
- case "quarter": return T`DATE_TRUNC(QUARTER, ${t}::TIMESTAMP)`;
562
- case "month": return T`DATE_TRUNC(MONTH, ${t}::TIMESTAMP)`;
563
- case "week": return T`DATE_TRUNC(WEEK, ${t}::TIMESTAMP)`;
564
- case "day": return T`DATE_TRUNC(DAY, ${t}::TIMESTAMP)::TIMESTAMP`;
565
- case "hour": return T`DATE_TRUNC(HOUR, ${t}::TIMESTAMP)`;
566
- case "minute": return T`DATE_TRUNC(MINUTE, ${t}::TIMESTAMP)`;
567
- case "second": return T`DATE_TRUNC(SECOND, ${t}::TIMESTAMP)`;
560
+ case "year": return C`DATE_TRUNC(YEAR, ${t}::TIMESTAMP)`;
561
+ case "quarter": return C`DATE_TRUNC(QUARTER, ${t}::TIMESTAMP)`;
562
+ case "month": return C`DATE_TRUNC(MONTH, ${t}::TIMESTAMP)`;
563
+ case "week": return C`DATE_TRUNC(WEEK, ${t}::TIMESTAMP)`;
564
+ case "day": return C`DATE_TRUNC(DAY, ${t}::TIMESTAMP)::TIMESTAMP`;
565
+ case "hour": return C`DATE_TRUNC(HOUR, ${t}::TIMESTAMP)`;
566
+ case "minute": return C`DATE_TRUNC(MINUTE, ${t}::TIMESTAMP)`;
567
+ case "second": return C`DATE_TRUNC(SECOND, ${t}::TIMESTAMP)`;
568
568
  default: return t;
569
569
  }
570
570
  }
571
571
  caseInsensitiveLike(e, t, n) {
572
- return n ? T`LOWER(${e}) NOT LIKE LOWER(${t})` : T`LOWER(${e}) LIKE LOWER(${t})`;
572
+ return n ? C`LOWER(${e}) NOT LIKE LOWER(${t})` : C`LOWER(${e}) LIKE LOWER(${t})`;
573
573
  }
574
574
  regexCondition(e, t, n) {
575
- return n ? T`NOT (${e} REGEXP ${t})` : T`${e} REGEXP ${t}`;
575
+ return n ? C`NOT (${e} REGEXP ${t})` : C`${e} REGEXP ${t}`;
576
576
  }
577
577
  castToType(e, t) {
578
578
  switch (t) {
579
- case "timestamp": return T`${e}::TIMESTAMP`;
580
- case "decimal": return T`${e}::DECIMAL`;
581
- case "integer": return T`${e}::INTEGER`;
579
+ case "timestamp": return C`${e}::TIMESTAMP`;
580
+ case "decimal": return C`${e}::DECIMAL`;
581
+ case "integer": return C`${e}::INTEGER`;
582
582
  default: throw Error(`Unsupported cast type: ${t}`);
583
583
  }
584
584
  }
585
585
  tryCastToType(e, t) {
586
586
  switch (t) {
587
- case "timestamp": return T`TRY_CAST(${e} AS TIMESTAMP)`;
588
- case "decimal": return T`TRY_CAST(${e} AS DECIMAL)`;
589
- case "integer": return T`TRY_CAST(${e} AS INTEGER)`;
587
+ case "timestamp": return C`TRY_CAST(${e} AS TIMESTAMP)`;
588
+ case "decimal": return C`TRY_CAST(${e} AS DECIMAL)`;
589
+ case "integer": return C`TRY_CAST(${e} AS INTEGER)`;
590
590
  default: throw Error(`Unsupported cast type: ${t}`);
591
591
  }
592
592
  }
@@ -600,7 +600,7 @@ var O = class {
600
600
  }
601
601
  buildVariance(e, t = !1) {
602
602
  let n = t ? "COVAR_SAMP" : "COVAR_POP";
603
- return T`COALESCE(${T.raw(n)}(${e}, ${e}), 0)`;
603
+ return C`COALESCE(${C.raw(n)}(${e}, ${e}), 0)`;
604
604
  }
605
605
  buildPercentile(e, t) {
606
606
  throw Error("Percentile functions are not yet supported for Databend");
@@ -611,51 +611,51 @@ var O = class {
611
611
  }
612
612
  buildIntervalFromISO(e) {
613
613
  let t = this.durationToSeconds(e);
614
- return T`${t}`;
614
+ return C`${t}`;
615
615
  }
616
616
  buildTimeDifferenceSeconds(e, t) {
617
- return T`DATEDIFF('SECOND', ${t}, ${e})`;
617
+ return C`DATEDIFF('SECOND', ${t}, ${e})`;
618
618
  }
619
619
  buildDateAddInterval(e, t) {
620
620
  let n = this.parseISODuration(t), r = e;
621
- return n.years && (r = T`DATEADD('YEAR', ${n.years}, ${r})`), n.months && (r = T`DATEADD('MONTH', ${n.months}, ${r})`), n.days && (r = T`DATEADD('DAY', ${n.days}, ${r})`), n.hours && (r = T`DATEADD('HOUR', ${n.hours}, ${r})`), n.minutes && (r = T`DATEADD('MINUTE', ${n.minutes}, ${r})`), n.seconds && (r = T`DATEADD('SECOND', ${n.seconds}, ${r})`), r;
621
+ return n.years && (r = C`DATEADD('YEAR', ${n.years}, ${r})`), n.months && (r = C`DATEADD('MONTH', ${n.months}, ${r})`), n.days && (r = C`DATEADD('DAY', ${n.days}, ${r})`), n.hours && (r = C`DATEADD('HOUR', ${n.hours}, ${r})`), n.minutes && (r = C`DATEADD('MINUTE', ${n.minutes}, ${r})`), n.seconds && (r = C`DATEADD('SECOND', ${n.seconds}, ${r})`), r;
622
622
  }
623
623
  buildDateDiffPeriods(e, t, n) {
624
624
  let r = n.toUpperCase();
625
- return T`DATEDIFF('${T.raw(r)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
625
+ return C`DATEDIFF('${C.raw(r)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
626
626
  }
627
627
  buildPeriodSeriesSubquery(e) {
628
- return T`(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS period_number FROM TABLE(GENERATOR(ROWCOUNT => ${e + 1}))) p`;
628
+ return C`(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS period_number FROM TABLE(GENERATOR(ROWCOUNT => ${e + 1}))) p`;
629
629
  }
630
630
  buildTimeDimension(e, t) {
631
631
  switch (e) {
632
- case "year": return T`DATE_TRUNC('YEAR', ${t}::TIMESTAMP)`;
633
- case "quarter": return T`DATE_TRUNC('QUARTER', ${t}::TIMESTAMP)`;
634
- case "month": return T`DATE_TRUNC('MONTH', ${t}::TIMESTAMP)`;
635
- case "week": return T`DATE_TRUNC('WEEK', ${t}::TIMESTAMP)`;
636
- case "day": return T`DATE_TRUNC('DAY', ${t}::TIMESTAMP)::TIMESTAMP`;
637
- case "hour": return T`DATE_TRUNC('HOUR', ${t}::TIMESTAMP)`;
638
- case "minute": return T`DATE_TRUNC('MINUTE', ${t}::TIMESTAMP)`;
639
- case "second": return T`DATE_TRUNC('SECOND', ${t}::TIMESTAMP)`;
632
+ case "year": return C`DATE_TRUNC('YEAR', ${t}::TIMESTAMP)`;
633
+ case "quarter": return C`DATE_TRUNC('QUARTER', ${t}::TIMESTAMP)`;
634
+ case "month": return C`DATE_TRUNC('MONTH', ${t}::TIMESTAMP)`;
635
+ case "week": return C`DATE_TRUNC('WEEK', ${t}::TIMESTAMP)`;
636
+ case "day": return C`DATE_TRUNC('DAY', ${t}::TIMESTAMP)::TIMESTAMP`;
637
+ case "hour": return C`DATE_TRUNC('HOUR', ${t}::TIMESTAMP)`;
638
+ case "minute": return C`DATE_TRUNC('MINUTE', ${t}::TIMESTAMP)`;
639
+ case "second": return C`DATE_TRUNC('SECOND', ${t}::TIMESTAMP)`;
640
640
  default: return t;
641
641
  }
642
642
  }
643
643
  regexCondition(e, t, n) {
644
- return n ? T`NOT REGEXP_LIKE(${e}, ${t})` : T`REGEXP_LIKE(${e}, ${t})`;
644
+ return n ? C`NOT REGEXP_LIKE(${e}, ${t})` : C`REGEXP_LIKE(${e}, ${t})`;
645
645
  }
646
646
  castToType(e, t) {
647
647
  switch (t) {
648
- case "timestamp": return T`${e}::TIMESTAMP`;
649
- case "decimal": return T`${e}::DECIMAL`;
650
- case "integer": return T`${e}::INTEGER`;
648
+ case "timestamp": return C`${e}::TIMESTAMP`;
649
+ case "decimal": return C`${e}::DECIMAL`;
650
+ case "integer": return C`${e}::INTEGER`;
651
651
  default: throw Error(`Unsupported cast type: ${t}`);
652
652
  }
653
653
  }
654
654
  tryCastToType(e, t) {
655
655
  switch (t) {
656
- case "timestamp": return T`TRY_CAST(${e} AS TIMESTAMP)`;
657
- case "decimal": return T`TRY_CAST(${e} AS DECIMAL)`;
658
- case "integer": return T`TRY_CAST(${e} AS INTEGER)`;
656
+ case "timestamp": return C`TRY_CAST(${e} AS TIMESTAMP)`;
657
+ case "decimal": return C`TRY_CAST(${e} AS DECIMAL)`;
658
+ case "integer": return C`TRY_CAST(${e} AS INTEGER)`;
659
659
  default: throw Error(`Unsupported cast type: ${t}`);
660
660
  }
661
661
  }
@@ -669,7 +669,7 @@ var O = class {
669
669
  }
670
670
  buildPercentile(e, t) {
671
671
  let n = (t / 100).toString();
672
- return T`PERCENTILE_CONT(${T.raw(n)}) WITHIN GROUP (ORDER BY ${e})`;
672
+ return C`PERCENTILE_CONT(${C.raw(n)}) WITHIN GROUP (ORDER BY ${e})`;
673
673
  }
674
674
  };
675
675
  //#endregion
@@ -785,18 +785,18 @@ function j(e, t, n) {
785
785
  let r = [];
786
786
  if (n === "question") {
787
787
  let n = e.split("?");
788
- r.push(T.raw(n[0]));
789
- for (let e = 1; e < n.length; e++) r.push(T`${t[e - 1]}`), r.push(T.raw(n[e]));
788
+ r.push(C.raw(n[0]));
789
+ for (let e = 1; e < n.length; e++) r.push(C`${t[e - 1]}`), r.push(C.raw(n[e]));
790
790
  } else {
791
791
  let n = /\$(\d+)/g, i = 0, a;
792
792
  for (; (a = n.exec(e)) !== null;) {
793
- r.push(T.raw(e.slice(i, a.index)));
793
+ r.push(C.raw(e.slice(i, a.index)));
794
794
  let n = parseInt(a[1], 10) - 1;
795
- r.push(T`${t[n]}`), i = a.index + a[0].length;
795
+ r.push(C`${t[n]}`), i = a.index + a[0].length;
796
796
  }
797
- r.push(T.raw(e.slice(i)));
797
+ r.push(C.raw(e.slice(i)));
798
798
  }
799
- return T.join(r);
799
+ return C.join(r);
800
800
  }
801
801
  function Re(e) {
802
802
  return e && typeof e == "object" ? e : null;
@@ -896,7 +896,7 @@ var Ke = class extends k {
896
896
  async explainQuery(e, t, n) {
897
897
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
898
898
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
899
- return Ie(Ve(He(await this.db.execute(T`${T.raw(r)} ${j(e, t, "dollar")}`))), {
899
+ return Ie(Ve(He(await this.db.execute(C`${C.raw(r)} ${j(e, t, "dollar")}`))), {
900
900
  sql: e,
901
901
  params: t
902
902
  });
@@ -905,7 +905,7 @@ var Ke = class extends k {
905
905
  if (!e || e.length === 0) return [];
906
906
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
907
907
  try {
908
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = He(await this.db.execute(T`
908
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = He(await this.db.execute(C`
909
909
  SELECT
910
910
  t.relname as table_name,
911
911
  i.relname as index_name,
@@ -919,7 +919,7 @@ var Ke = class extends k {
919
919
  JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS k(attnum, n) ON true
920
920
  JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
921
921
  WHERE n.nspname = 'public'
922
- AND t.relname IN (${T.raw(t)})
922
+ AND t.relname IN (${C.raw(t)})
923
923
  GROUP BY t.relname, i.relname, ix.indisunique, ix.indisprimary
924
924
  ORDER BY t.relname, i.relname
925
925
  `));
@@ -1018,7 +1018,7 @@ var Xe = class extends k {
1018
1018
  async explainQuery(e, t, n) {
1019
1019
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1020
1020
  if (!this.db.execute) throw Error("MySQL database instance must have an execute method");
1021
- return Ye(ze(await this.db.execute(T`${T.raw(r)} ${j(e, t, "question")}`)), {
1021
+ return Ye(ze(await this.db.execute(C`${C.raw(r)} ${j(e, t, "question")}`)), {
1022
1022
  sql: e,
1023
1023
  params: t
1024
1024
  });
@@ -1027,7 +1027,7 @@ var Xe = class extends k {
1027
1027
  if (!e || e.length === 0) return [];
1028
1028
  if (!this.db.execute) throw Error("MySQL database instance must have an execute method");
1029
1029
  try {
1030
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(T`
1030
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(C`
1031
1031
  SELECT
1032
1032
  TABLE_NAME as table_name,
1033
1033
  INDEX_NAME as index_name,
@@ -1036,7 +1036,7 @@ var Xe = class extends k {
1036
1036
  CASE WHEN INDEX_NAME = 'PRIMARY' THEN TRUE ELSE FALSE END as is_primary
1037
1037
  FROM INFORMATION_SCHEMA.STATISTICS
1038
1038
  WHERE TABLE_SCHEMA = DATABASE()
1039
- AND LOWER(TABLE_NAME) IN (${T.raw(t)})
1039
+ AND LOWER(TABLE_NAME) IN (${C.raw(t)})
1040
1040
  GROUP BY TABLE_NAME, INDEX_NAME, NON_UNIQUE
1041
1041
  ORDER BY TABLE_NAME, INDEX_NAME
1042
1042
  `);
@@ -1157,7 +1157,7 @@ var et = class extends k {
1157
1157
  }
1158
1158
  async explainQuery(e, t, n) {
1159
1159
  let r;
1160
- if (this.db.all) r = this.db.all(T`EXPLAIN QUERY PLAN ${j(e, t, "question")}`);
1160
+ if (this.db.all) r = this.db.all(C`EXPLAIN QUERY PLAN ${j(e, t, "question")}`);
1161
1161
  else throw Error("SQLite database instance must have an all() method for EXPLAIN");
1162
1162
  return $e(Be(r), {
1163
1163
  sql: e,
@@ -1170,9 +1170,9 @@ var et = class extends k {
1170
1170
  try {
1171
1171
  let t = [];
1172
1172
  for (let n of e) {
1173
- let e = this.db.all(T.raw(`SELECT name, "unique", origin FROM pragma_index_list('${n.toLowerCase()}')`));
1173
+ let e = this.db.all(C.raw(`SELECT name, "unique", origin FROM pragma_index_list('${n.toLowerCase()}')`));
1174
1174
  if (Array.isArray(e)) for (let r of e) {
1175
- let e = r.name, i = !!r.unique, a = r.origin, o = this.db.all(T.raw(`SELECT name FROM pragma_index_info('${e}') ORDER BY seqno`)), s = [];
1175
+ let e = r.name, i = !!r.unique, a = r.origin, o = this.db.all(C.raw(`SELECT name FROM pragma_index_info('${e}') ORDER BY seqno`)), s = [];
1176
1176
  if (Array.isArray(o)) for (let e of o) {
1177
1177
  let t = e.name;
1178
1178
  typeof t == "string" && s.push(t);
@@ -1349,7 +1349,7 @@ var st = class extends k {
1349
1349
  async explainQuery(e, t, n) {
1350
1350
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1351
1351
  if (!this.db.execute) throw Error("DuckDB database instance must have an execute method");
1352
- let i = await this.db.execute(T`${T.raw(r)} ${j(e, t, "dollar")}`), a = [];
1352
+ let i = await this.db.execute(C`${C.raw(r)} ${j(e, t, "dollar")}`), a = [];
1353
1353
  if (Array.isArray(i)) {
1354
1354
  for (let e of i) if (e && typeof e == "object") {
1355
1355
  let t = e.explain_value || e["QUERY PLAN"] || e.query_plan || e.Plan || Object.values(e)[0];
@@ -1365,7 +1365,7 @@ var st = class extends k {
1365
1365
  if (!e || e.length === 0) return [];
1366
1366
  if (!this.db.execute) throw Error("DuckDB database instance must have an execute method");
1367
1367
  try {
1368
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(T`
1368
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(C`
1369
1369
  SELECT
1370
1370
  table_name,
1371
1371
  index_name,
@@ -1373,7 +1373,7 @@ var st = class extends k {
1373
1373
  is_unique,
1374
1374
  is_primary
1375
1375
  FROM duckdb_indexes()
1376
- WHERE LOWER(table_name) IN (${T.raw(t)})
1376
+ WHERE LOWER(table_name) IN (${C.raw(t)})
1377
1377
  GROUP BY table_name, index_name, is_unique, is_primary
1378
1378
  ORDER BY table_name, index_name
1379
1379
  `);
@@ -1524,7 +1524,7 @@ var ft = class extends k {
1524
1524
  async explainQuery(e, t, n) {
1525
1525
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1526
1526
  if (!this.db.execute) throw Error("Databend database instance must have an execute method");
1527
- let i = await this.db.execute(T`${T.raw(r)} ${j(e, t, "dollar")}`), a = [];
1527
+ let i = await this.db.execute(C`${C.raw(r)} ${j(e, t, "dollar")}`), a = [];
1528
1528
  if (Array.isArray(i)) {
1529
1529
  for (let e of i) if (e && typeof e == "object") {
1530
1530
  let t = e.explain || e["QUERY PLAN"] || e.query_plan || e.Plan || Object.values(e)[0];
@@ -1680,7 +1680,7 @@ var vt = class extends k {
1680
1680
  }
1681
1681
  async explainQuery(e, t, n) {
1682
1682
  if (n?.analyze, !this.db.execute) throw Error("Snowflake database instance must have an execute method");
1683
- let r = await this.db.execute(T`${T.raw("EXPLAIN")} ${j(e, t, "question")}`), i = [];
1683
+ let r = await this.db.execute(C`${C.raw("EXPLAIN")} ${j(e, t, "question")}`), i = [];
1684
1684
  if (Array.isArray(r)) {
1685
1685
  for (let e of r) if (e && typeof e == "object") {
1686
1686
  let t = e.content || e["QUERY PLAN"] || e.plan || Object.values(e)[0];
@@ -1932,14 +1932,14 @@ var I = class {
1932
1932
  this.databaseAdapter = e;
1933
1933
  }
1934
1934
  buildTimeDimensionExpression(e, t, n) {
1935
- let r = f(e, n);
1936
- return t ? this.databaseAdapter.buildTimeDimension(t, r) : r instanceof ce ? r : T`${r}`;
1935
+ let r = l(e, n);
1936
+ return t ? this.databaseAdapter.buildTimeDimension(t, r) : r instanceof ie ? r : C`${r}`;
1937
1937
  }
1938
1938
  buildDateRangeCondition(e, t) {
1939
1939
  return t ? Array.isArray(t) ? this.buildArrayDateRangeCondition(e, t) : typeof t == "string" ? this.buildStringDateRangeCondition(e, t) : null : null;
1940
1940
  }
1941
- rangeBetween(e, t, r) {
1942
- return n(d(e, t), S(e, r));
1941
+ rangeBetween(e, t, n) {
1942
+ return w(s(e, t), x(e, n));
1943
1943
  }
1944
1944
  endOfDayValue(e) {
1945
1945
  let t = wt(this.databaseAdapter, e);
@@ -1974,36 +1974,36 @@ var I = class {
1974
1974
  if (n.length > 1) {
1975
1975
  if (i?.type === "time") {
1976
1976
  let e = n.map((e) => o.normalizeDate(e) || e);
1977
- return w(t, e);
1977
+ return d(t, e);
1978
1978
  }
1979
- return w(t, n);
1979
+ return d(t, n);
1980
1980
  }
1981
1981
  if (n.length === 1) {
1982
1982
  let e = i?.type === "time" && o.normalizeDate(r) || r;
1983
- return x(t, e);
1983
+ return b(t, e);
1984
1984
  }
1985
1985
  return a.buildBooleanLiteral(!1);
1986
- }, Nt = (t) => {
1987
- let { fieldExpr: n, filteredValues: r, value: i } = t;
1988
- return r.length > 1 ? e(n, r) : r.length === 1 ? _(n, i) : null;
1989
- }, L = (e) => ({ fieldExpr: t, value: n, databaseAdapter: r }) => r.buildStringCondition(t, e, n), Pt = ({ fieldExpr: e, value: t }) => s(e, t), Ft = ({ fieldExpr: e, value: t }) => d(e, t), It = ({ fieldExpr: e, value: t }) => ne(e, t), Lt = ({ fieldExpr: e, value: t }) => S(e, t), Rt = ({ fieldExpr: e }) => u(e), zt = ({ fieldExpr: e }) => re(e), Bt = (e) => {
1990
- let { fieldExpr: t, values: r, filteredValues: i, databaseAdapter: a, dateTimeBuilder: o } = e;
1991
- if (i.length < 2) return null;
1992
- let s = o.normalizeDate(i[0]), c = o.normalizeDate(i[1]);
1993
- if (!s || !c) return null;
1994
- let l = r[1];
1986
+ }, Nt = (e) => {
1987
+ let { fieldExpr: t, filteredValues: n, value: r } = e;
1988
+ return n.length > 1 ? g(t, n) : n.length === 1 ? re(t, r) : null;
1989
+ }, L = (e) => ({ fieldExpr: t, value: n, databaseAdapter: r }) => r.buildStringCondition(t, e, n), Pt = ({ fieldExpr: e, value: t }) => te(e, t), Ft = ({ fieldExpr: e, value: t }) => s(e, t), It = ({ fieldExpr: e, value: t }) => ne(e, t), Lt = ({ fieldExpr: e, value: t }) => x(e, t), Rt = ({ fieldExpr: e }) => se(e), zt = ({ fieldExpr: e }) => u(e), Bt = (e) => {
1990
+ let { fieldExpr: t, values: n, filteredValues: r, databaseAdapter: i, dateTimeBuilder: a } = e;
1991
+ if (r.length < 2) return null;
1992
+ let o = a.normalizeDate(r[0]), c = a.normalizeDate(r[1]);
1993
+ if (!o || !c) return null;
1994
+ let l = n[1];
1995
1995
  if (typeof l == "string" && /^\d{4}-\d{2}-\d{2}$/.test(l.trim())) {
1996
- let e = typeof c == "number" ? /* @__PURE__ */ new Date(c * (a.getEngineType() === "sqlite" ? 1e3 : 1)) : new Date(c), t = new Date(e);
1997
- t.setUTCHours(23, 59, 59, 999), c = a.isTimestampInteger() ? a.getEngineType() === "sqlite" ? Math.floor(t.getTime() / 1e3) : t.getTime() : t.toISOString();
1996
+ let e = typeof c == "number" ? /* @__PURE__ */ new Date(c * (i.getEngineType() === "sqlite" ? 1e3 : 1)) : new Date(c), t = new Date(e);
1997
+ t.setUTCHours(23, 59, 59, 999), c = i.isTimestampInteger() ? i.getEngineType() === "sqlite" ? Math.floor(t.getTime() / 1e3) : t.getTime() : t.toISOString();
1998
1998
  }
1999
- return n(d(t, s), S(t, c));
1999
+ return w(s(t, o), x(t, c));
2000
2000
  }, Vt = ({ fieldExpr: e, value: t, dateTimeBuilder: n }) => {
2001
2001
  let r = n.normalizeDate(t);
2002
2002
  return r ? ne(e, r) : null;
2003
2003
  }, Ht = ({ fieldExpr: e, value: t, dateTimeBuilder: n }) => {
2004
2004
  let r = n.normalizeDate(t);
2005
- return r ? s(e, r) : null;
2006
- }, Ut = ({ fieldExpr: e, filteredValues: t }) => t.length >= 2 ? n(d(e, t[0]), S(e, t[1])) : null, Wt = ({ fieldExpr: e, filteredValues: t }) => t.length >= 2 ? C(ne(e, t[0]), s(e, t[1])) : null, Gt = ({ fieldExpr: e, filteredValues: t }) => t.length > 0 ? w(e, t) : null, Kt = ({ fieldExpr: t, filteredValues: n }) => n.length > 0 ? e(t, n) : null, qt = ({ fieldExpr: e }) => C(re(e), x(e, "")), Jt = ({ fieldExpr: e }) => n(u(e), _(e, "")), Yt = (e) => ({ fieldExpr: t, filteredValues: n, databaseAdapter: r }) => r.getEngineType() === "postgres" ? e(t, n) : null, Xt = {
2005
+ return r ? te(e, r) : null;
2006
+ }, Ut = ({ fieldExpr: e, filteredValues: t }) => t.length >= 2 ? w(s(e, t[0]), x(e, t[1])) : null, Wt = ({ fieldExpr: t, filteredValues: n }) => n.length >= 2 ? e(ne(t, n[0]), te(t, n[1])) : null, Gt = ({ fieldExpr: e, filteredValues: t }) => t.length > 0 ? d(e, t) : null, Kt = ({ fieldExpr: e, filteredValues: t }) => t.length > 0 ? g(e, t) : null, qt = ({ fieldExpr: t }) => e(u(t), b(t, "")), Jt = ({ fieldExpr: e }) => w(se(e), re(e, "")), Yt = (e) => ({ fieldExpr: t, filteredValues: n, databaseAdapter: r }) => r.getEngineType() === "postgres" ? e(t, n) : null, Xt = {
2007
2007
  equals: Mt,
2008
2008
  notEquals: Nt,
2009
2009
  contains: L("contains"),
@@ -2030,9 +2030,9 @@ var I = class {
2030
2030
  notRegex: L("notRegex"),
2031
2031
  isEmpty: qt,
2032
2032
  isNotEmpty: Jt,
2033
- arrayContains: Yt(c),
2034
- arrayOverlaps: Yt(ee),
2035
- arrayContained: Yt(te)
2033
+ arrayContains: Yt(ee),
2034
+ arrayOverlaps: Yt(c),
2035
+ arrayContained: Yt(n)
2036
2036
  };
2037
2037
  function Zt(e, t) {
2038
2038
  let n = Xt[e];
@@ -2041,7 +2041,7 @@ function Zt(e, t) {
2041
2041
  //#endregion
2042
2042
  //#region src/server/builders/analysis-utils.ts
2043
2043
  function R(e) {
2044
- if (e.length !== 0) return e.length === 1 ? e[0] : n(...e);
2044
+ if (e.length !== 0) return e.length === 1 ? e[0] : w(...e);
2045
2045
  }
2046
2046
  function z(e) {
2047
2047
  if ("type" in e && "filters" in e) {
@@ -2059,9 +2059,9 @@ function Qt(e) {
2059
2059
  }
2060
2060
  function $t(e) {
2061
2061
  return {
2062
- noMapping: ({ cubeName: n }) => t(`${e}.noBindingKeyMapping`, { cubeName: n }),
2063
- keyDimNotFound: ({ bindingKey: n }) => t(`${e}.bindingKeyDimNotFound`, { bindingKey: n }),
2064
- mappingDimNotFound: ({ dimension: n }) => t(`${e}.bindingKeyMappingDimNotFound`, { dimension: n })
2062
+ noMapping: ({ cubeName: t }) => S(`${e}.noBindingKeyMapping`, { cubeName: t }),
2063
+ keyDimNotFound: ({ bindingKey: t }) => S(`${e}.bindingKeyDimNotFound`, { bindingKey: t }),
2064
+ mappingDimNotFound: ({ dimension: t }) => S(`${e}.bindingKeyMappingDimNotFound`, { dimension: t })
2065
2065
  };
2066
2066
  }
2067
2067
  function en(e, t, n, r) {
@@ -2078,7 +2078,7 @@ function tn(e, t, n, r, i) {
2078
2078
  cubeName: a,
2079
2079
  dimName: o
2080
2080
  }));
2081
- return f(s.sql, n);
2081
+ return l(s.sql, n);
2082
2082
  }
2083
2083
  let a = e.find((e) => e.cube === t.name);
2084
2084
  if (!a) throw Error(r.noMapping({ cubeName: t.name }));
@@ -2088,19 +2088,19 @@ function tn(e, t, n, r, i) {
2088
2088
  cubeName: a.cube,
2089
2089
  dimName: o
2090
2090
  }));
2091
- return f(s.sql, n);
2091
+ return l(s.sql, n);
2092
2092
  }
2093
- function nn(e, n, r, i) {
2093
+ function nn(e, t, n, r) {
2094
2094
  if (typeof e == "string") {
2095
- let [, a] = e.split("."), o = n.dimensions?.[a];
2096
- if (!o) throw Error(t(`${i}.timeDimNotFound`, { timeDimension: e }));
2097
- return f(o.sql, r);
2095
+ let [, i] = e.split("."), a = t.dimensions?.[i];
2096
+ if (!a) throw Error(S(`${r}.timeDimNotFound`, { timeDimension: e }));
2097
+ return l(a.sql, n);
2098
2098
  }
2099
- let a = e.find((e) => e.cube === n.name);
2100
- if (!a) throw Error(t(`${i}.noTimeDimMapping`, { cubeName: n.name }));
2101
- let [, o] = a.dimension.split("."), s = n.dimensions?.[o];
2102
- if (!s) throw Error(t(`${i}.timeDimMappingNotFound`, { dimension: a.dimension }));
2103
- return f(s.sql, r);
2099
+ let i = e.find((e) => e.cube === t.name);
2100
+ if (!i) throw Error(S(`${r}.noTimeDimMapping`, { cubeName: t.name }));
2101
+ let [, a] = i.dimension.split("."), o = t.dimensions?.[a];
2102
+ if (!o) throw Error(S(`${r}.timeDimMappingNotFound`, { dimension: i.dimension }));
2103
+ return l(o.sql, n);
2104
2104
  }
2105
2105
  //#endregion
2106
2106
  //#region src/server/builders/filter-builder.ts
@@ -2133,20 +2133,20 @@ var B = class {
2133
2133
  buildLogicalFilter(e, t, n) {
2134
2134
  return "and" in e && e.and ? this.combineFilters(e.and, !0, t, n) : "or" in e && e.or ? this.combineFilters(e.or, !1, t, n) : null;
2135
2135
  }
2136
- combineFilters(e, t, r, i) {
2137
- let a = e.map((e) => this.buildSingleFilter(e, r, i)).filter((e) => e !== null);
2138
- return a.length === 0 ? null : a.length === 1 ? a[0] : t ? n(...a) : C(...a);
2136
+ combineFilters(t, n, r, i) {
2137
+ let a = t.map((e) => this.buildSingleFilter(e, r, i)).filter((e) => e !== null);
2138
+ return a.length === 0 ? null : a.length === 1 ? a[0] : n ? w(...a) : e(...a);
2139
2139
  }
2140
2140
  buildSingleFilter(e, t, n) {
2141
2141
  if ("and" in e || "or" in e) return this.buildLogicalFilter(e, t, n);
2142
2142
  let r = z(e);
2143
2143
  if (r) return this.combineFilters(r.filters, r.isAnd, t, n);
2144
- let i = e, [a, o] = i.member.split("."), s = t.get(a);
2145
- if (!s) return null;
2146
- let c = s.dimensions?.[o];
2144
+ let i = e, [a, s] = i.member.split("."), c = t.get(a);
2147
2145
  if (!c) return null;
2148
- let u = l(c, n);
2149
- return this.buildFilterCondition(u, i.operator, i.values, c, i.dateRange);
2146
+ let l = c.dimensions?.[s];
2147
+ if (!l) return null;
2148
+ let u = o(l, n);
2149
+ return this.buildFilterCondition(u, i.operator, i.values, l, i.dateRange);
2150
2150
  }
2151
2151
  }, rn = [
2152
2152
  "lag",
@@ -2160,35 +2160,35 @@ var B = class {
2160
2160
  "movingAvg",
2161
2161
  "movingSum"
2162
2162
  ];
2163
- function an(e) {
2163
+ function V(e) {
2164
2164
  return rn.includes(e);
2165
2165
  }
2166
- function on(e) {
2167
- return an(e.type) && e.windowConfig?.measure !== void 0;
2166
+ function an(e) {
2167
+ return V(e.type) && e.windowConfig?.measure !== void 0;
2168
2168
  }
2169
- function sn(e, t) {
2169
+ function on(e, t) {
2170
2170
  if (!e.windowConfig?.measure) return null;
2171
2171
  let n = e.windowConfig.measure;
2172
2172
  return n.includes(".") ? n : `${t}.${n}`;
2173
2173
  }
2174
- function cn(e) {
2174
+ function sn(e) {
2175
2175
  switch (e) {
2176
2176
  case "lag":
2177
2177
  case "lead": return "difference";
2178
2178
  default: return "raw";
2179
2179
  }
2180
2180
  }
2181
- function V(e, t) {
2181
+ function cn(e, t) {
2182
2182
  let n = [], r = [], i = /* @__PURE__ */ new Set();
2183
2183
  for (let a of e) {
2184
2184
  let [e, o] = a.split("."), s = t.get(e);
2185
2185
  if (s?.measures?.[o]) {
2186
2186
  let t = s.measures[o];
2187
- if (on(t)) {
2187
+ if (an(t)) {
2188
2188
  r.push(a);
2189
- let n = sn(t, e);
2189
+ let n = on(t, e);
2190
2190
  n && i.add(n);
2191
- } else an(t.type) || n.push(a);
2191
+ } else V(t.type) || n.push(a);
2192
2192
  }
2193
2193
  }
2194
2194
  return {
@@ -2198,7 +2198,7 @@ function V(e, t) {
2198
2198
  };
2199
2199
  }
2200
2200
  function ln(e, t) {
2201
- return V(e, t).postAggWindowMeasures.length > 0;
2201
+ return cn(e, t).postAggWindowMeasures.length > 0;
2202
2202
  }
2203
2203
  //#endregion
2204
2204
  //#region src/server/resolvers/calculated-measure-resolver.ts
@@ -2338,35 +2338,35 @@ var H = class {
2338
2338
  };
2339
2339
  //#endregion
2340
2340
  //#region src/server/template-substitution.ts
2341
- function dn(e, n) {
2342
- let { cube: r, allCubes: i, resolvedMeasures: a } = n, o = fn(e), s = /* @__PURE__ */ new Map();
2343
- for (let e of o) {
2344
- let { originalRef: n, cubeName: o, fieldName: c } = e, l = o || r.name;
2345
- if (!i.get(l)) throw Error(t("server.validation.template.substituteTargetCubeNotFound", {
2346
- ref: `{${n}}`,
2347
- cubeName: l
2341
+ function dn(e, t) {
2342
+ let { cube: n, allCubes: r, resolvedMeasures: i } = t, a = fn(e), o = /* @__PURE__ */ new Map();
2343
+ for (let e of a) {
2344
+ let { originalRef: t, cubeName: a, fieldName: s } = e, c = a || n.name;
2345
+ if (!r.get(c)) throw Error(S("server.validation.template.substituteTargetCubeNotFound", {
2346
+ ref: `{${t}}`,
2347
+ cubeName: c
2348
2348
  }));
2349
- let u = `${l}.${c}`, d = a.get(u);
2350
- if (!d) throw Error(t("server.validation.template.substituteMeasureNotResolved", {
2351
- ref: `{${n}}`,
2352
- measureName: u
2349
+ let l = `${c}.${s}`, u = i.get(l);
2350
+ if (!u) throw Error(S("server.validation.template.substituteMeasureNotResolved", {
2351
+ ref: `{${t}}`,
2352
+ measureName: l
2353
2353
  }));
2354
- let f = d(), p = T`${f}`;
2355
- s.set(n, p);
2354
+ let d = u(), f = C`${d}`;
2355
+ o.set(t, f);
2356
2356
  }
2357
- let c = [], l = [], u = 0;
2358
- for (let t of o) {
2359
- let n = `{${t.originalRef}}`, r = e.indexOf(n, u);
2357
+ let s = [], c = [], l = 0;
2358
+ for (let t of a) {
2359
+ let n = `{${t.originalRef}}`, r = e.indexOf(n, l);
2360
2360
  if (r >= 0) {
2361
- c.push(e.substring(u, r));
2362
- let i = s.get(t.originalRef);
2363
- i && l.push(i), u = r + n.length;
2361
+ s.push(e.substring(l, r));
2362
+ let i = o.get(t.originalRef);
2363
+ i && c.push(i), l = r + n.length;
2364
2364
  }
2365
2365
  }
2366
- if (c.push(e.substring(u)), l.length === 0) return T.raw(e);
2367
- let d = [];
2368
- for (let e = 0; e < c.length; e++) c[e] && d.push(new se(c[e])), e < l.length && d.push(l[e]);
2369
- return T.join(d, T.raw(""));
2366
+ if (s.push(e.substring(l)), c.length === 0) return C.raw(e);
2367
+ let u = [];
2368
+ for (let e = 0; e < s.length; e++) s[e] && u.push(new le(s[e])), e < c.length && u.push(c[e]);
2369
+ return C.join(u, C.raw(""));
2370
2370
  }
2371
2371
  function fn(e) {
2372
2372
  if (e.length > 1e3) return [];
@@ -2389,21 +2389,21 @@ function fn(e) {
2389
2389
  return n;
2390
2390
  }
2391
2391
  function pn(e) {
2392
- let n = [], r = 0;
2393
- for (let i = 0; i < e.length; i++) if (e[i] === "{") r++;
2394
- else if (e[i] === "}" && (r--, r < 0)) {
2395
- n.push(t("server.validation.template.unmatchedClosingBrace", { position: i }));
2392
+ let t = [], n = 0;
2393
+ for (let r = 0; r < e.length; r++) if (e[r] === "{") n++;
2394
+ else if (e[r] === "}" && (n--, n < 0)) {
2395
+ t.push(S("server.validation.template.unmatchedClosingBrace", { position: r }));
2396
2396
  break;
2397
2397
  }
2398
- r > 0 && n.push(t("server.validation.template.unmatchedOpeningBrace")), /\{\s*\}/.test(e) && n.push(t("server.validation.template.emptyReference")), /\{[^}]*\{/.test(e) && n.push(t("server.validation.template.nestedBraces"));
2399
- let i = fn(e);
2400
- for (let e of i) {
2401
- let r = e.cubeName ? `${e.cubeName}.${e.fieldName}` : e.fieldName;
2402
- /^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(r) || n.push(t("server.validation.template.invalidMemberReference", { ref: `{${e.originalRef}}` })), r.split(".").length > 2 && n.push(t("server.validation.template.multipleDots", { ref: `{${e.originalRef}}` }));
2398
+ n > 0 && t.push(S("server.validation.template.unmatchedOpeningBrace")), /\{\s*\}/.test(e) && t.push(S("server.validation.template.emptyReference")), /\{[^}]*\{/.test(e) && t.push(S("server.validation.template.nestedBraces"));
2399
+ let r = fn(e);
2400
+ for (let e of r) {
2401
+ let n = e.cubeName ? `${e.cubeName}.${e.fieldName}` : e.fieldName;
2402
+ /^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(n) || t.push(S("server.validation.template.invalidMemberReference", { ref: `{${e.originalRef}}` })), n.split(".").length > 2 && t.push(S("server.validation.template.multipleDots", { ref: `{${e.originalRef}}` }));
2403
2403
  }
2404
2404
  return {
2405
- isValid: n.length === 0,
2406
- errors: n
2405
+ isValid: t.length === 0,
2406
+ errors: t
2407
2407
  };
2408
2408
  }
2409
2409
  function mn(e, t) {
@@ -2485,7 +2485,7 @@ var U = class e {
2485
2485
  if (o && o.measures[i]) {
2486
2486
  let t = o.measures[i];
2487
2487
  if (n.measures.includes(e)) {
2488
- let r = T`${T.identifier(n.cteAlias)}.${T.identifier(i)}`, o = this.reAggregateCteColumn(t.type, r);
2488
+ let r = C`${C.identifier(n.cteAlias)}.${C.identifier(i)}`, o = this.reAggregateCteColumn(t.type, r);
2489
2489
  a.set(e, () => o);
2490
2490
  }
2491
2491
  }
@@ -2512,34 +2512,34 @@ var U = class e {
2512
2512
  if (i.joinCubes) for (let e of i.joinCubes) o.set(e.cube.name, e.cube);
2513
2513
  return this.buildCTECalculatedMeasure(n, t, a, o, r);
2514
2514
  }
2515
- let o = T`${T.identifier(a.cteAlias)}.${T.identifier(t)}`;
2515
+ let o = C`${C.identifier(a.cteAlias)}.${C.identifier(t)}`;
2516
2516
  return this.reAggregateCteColumn(n.type, o);
2517
2517
  }
2518
2518
  buildMeasureExpression(t, n, r) {
2519
2519
  if (t.type === "calculated") throw Error(`Cannot build calculated measure '${t.name}' directly. Use buildCalculatedMeasure instead.`);
2520
2520
  if (e.isPostAggregationWindow(t)) throw Error(`Post-aggregation window measure '${t.name}' should be built via buildPostAggregationWindowExpression, not buildMeasureExpression.`);
2521
2521
  if (!t.sql) throw Error(`Measure '${t.name}' of type '${t.type}' is missing required 'sql' property. Only calculated measures and post-aggregation window functions can omit 'sql'.`);
2522
- let i = f(t.sql, n);
2522
+ let i = l(t.sql, n);
2523
2523
  if (n.ungrouped) return i;
2524
2524
  let a = this.applyMeasureFilters(t, i, n);
2525
2525
  return this.applyAggregation(t, a, n, r);
2526
2526
  }
2527
- applyMeasureFilters(e, t, r) {
2527
+ applyMeasureFilters(e, t, n) {
2528
2528
  if (!e.filters || e.filters.length === 0) return t;
2529
- let i = e.filters.map((e) => {
2530
- let t = e(r);
2531
- return t ? T`(${t})` : void 0;
2529
+ let r = e.filters.map((e) => {
2530
+ let t = e(n);
2531
+ return t ? C`(${t})` : void 0;
2532
2532
  }).filter(Boolean);
2533
- if (i.length === 0) return t;
2534
- let a = i.length === 1 ? i[0] : n(...i);
2533
+ if (r.length === 0) return t;
2534
+ let i = r.length === 1 ? r[0] : w(...r);
2535
2535
  return this.databaseAdapter.buildCaseWhen([{
2536
- when: a,
2536
+ when: i,
2537
2537
  then: t
2538
2538
  }]);
2539
2539
  }
2540
2540
  applyAggregation(e, t, n, r) {
2541
2541
  switch (e.type) {
2542
- case "count": return pe(t);
2542
+ case "count": return T(t);
2543
2543
  case "countDistinct": return me(t);
2544
2544
  case "sum": return E(t);
2545
2545
  case "avg": return this.databaseAdapter.buildAvg(t);
@@ -2564,12 +2564,12 @@ var U = class e {
2564
2564
  case "lastValue":
2565
2565
  case "movingAvg":
2566
2566
  case "movingSum": return this.buildWindowMeasure(e, t, n, r);
2567
- default: return pe(t);
2567
+ default: return T(t);
2568
2568
  }
2569
2569
  }
2570
2570
  buildStatistical(e, t, n) {
2571
2571
  let r = n();
2572
- return r === null ? (console.warn(`[drizzle-cube] ${e.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), T`MAX(NULL)`) : r;
2572
+ return r === null ? (console.warn(`[drizzle-cube] ${e.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), C`MAX(NULL)`) : r;
2573
2573
  }
2574
2574
  resolvePercentile(e) {
2575
2575
  switch (e.type) {
@@ -2590,13 +2590,13 @@ var U = class e {
2590
2590
  nTile: i.nTile,
2591
2591
  frame: i.frame
2592
2592
  });
2593
- return s === null ? (console.warn(`[drizzle-cube] ${e.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), T`NULL`) : s;
2593
+ return s === null ? (console.warn(`[drizzle-cube] ${e.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), C`NULL`) : s;
2594
2594
  }
2595
2595
  resolveWindowPartitions(e, t, n) {
2596
2596
  if (!e.partitionBy || e.partitionBy.length === 0 || !n) return;
2597
2597
  let r = e.partitionBy.map((e) => {
2598
2598
  let r = e.includes(".") ? e.split(".")[1] : e, i = n.dimensions?.[r];
2599
- return i ? f(i.sql, t) : (console.warn(`[drizzle-cube] Window function partition dimension '${e}' not found in cube '${n.name}'`), null);
2599
+ return i ? l(i.sql, t) : (console.warn(`[drizzle-cube] Window function partition dimension '${e}' not found in cube '${n.name}'`), null);
2600
2600
  }).filter((e) => e !== null);
2601
2601
  return r.length > 0 ? r : void 0;
2602
2602
  }
@@ -2605,12 +2605,12 @@ var U = class e {
2605
2605
  let r = e.orderBy.map((e) => {
2606
2606
  let r = e.field.includes(".") ? e.field.split(".")[1] : e.field, i = n.dimensions?.[r];
2607
2607
  if (i) return {
2608
- field: f(i.sql, t),
2608
+ field: l(i.sql, t),
2609
2609
  direction: e.direction
2610
2610
  };
2611
2611
  let a = n.measures?.[r];
2612
2612
  return a && a.sql ? {
2613
- field: f(a.sql, t),
2613
+ field: l(a.sql, t),
2614
2614
  direction: e.direction
2615
2615
  } : (console.warn(`[drizzle-cube] Window function order field '${e.field}' not found in cube '${n.name}'`), null);
2616
2616
  }).filter((e) => e !== null);
@@ -2618,7 +2618,7 @@ var U = class e {
2618
2618
  }
2619
2619
  static WINDOW_FUNCTION_TYPES = rn;
2620
2620
  static isWindowFunction(e) {
2621
- return an(e);
2621
+ return V(e);
2622
2622
  }
2623
2623
  static categorizeMeasures(t, n) {
2624
2624
  let r = [], i = [];
@@ -2639,16 +2639,16 @@ var U = class e {
2639
2639
  return r.length > 0;
2640
2640
  }
2641
2641
  static isPostAggregationWindow(e) {
2642
- return on(e);
2642
+ return an(e);
2643
2643
  }
2644
2644
  static getWindowBaseMeasure(e, t) {
2645
- return sn(e, t);
2645
+ return on(e, t);
2646
2646
  }
2647
2647
  static getDefaultWindowOperation(e) {
2648
- return cn(e);
2648
+ return sn(e);
2649
2649
  }
2650
2650
  static categorizeForPostAggregation(e, t) {
2651
- return V(e, t);
2651
+ return cn(e, t);
2652
2652
  }
2653
2653
  static hasPostAggregationWindows(e, t) {
2654
2654
  return ln(e, t);
@@ -2732,9 +2732,9 @@ var U = class e {
2732
2732
  let s = r?.preAggregationCTEs?.find((e) => e.cube.name === i);
2733
2733
  if (s) {
2734
2734
  let e = s.joinKeys.find((e) => e.targetColumn === a);
2735
- return e && e.sourceColumnObj ? e.sourceColumnObj : T`${T.identifier(s.cteAlias)}.${T.identifier(a)}`;
2735
+ return e && e.sourceColumnObj ? e.sourceColumnObj : C`${C.identifier(s.cteAlias)}.${C.identifier(a)}`;
2736
2736
  }
2737
- return f(o.dimensions[a].sql, n);
2737
+ return l(o.dimensions[a].sql, n);
2738
2738
  }
2739
2739
  resolveTimeDimensionGroupField(e, t, n, r) {
2740
2740
  let [i, a] = e.dimension.split("."), o = t.get(i);
@@ -2742,7 +2742,7 @@ var U = class e {
2742
2742
  let s = r?.preAggregationCTEs?.find((e) => e.cube.name === i);
2743
2743
  if (s) {
2744
2744
  let t = s.joinKeys.find((e) => e.targetColumn === a);
2745
- return t && t.sourceColumnObj ? this.dateTimeBuilder.buildTimeDimensionExpression(t.sourceColumnObj, e.granularity, n) : T`${T.identifier(s.cteAlias)}.${T.identifier(a)}`;
2745
+ return t && t.sourceColumnObj ? this.dateTimeBuilder.buildTimeDimensionExpression(t.sourceColumnObj, e.granularity, n) : C`${C.identifier(s.cteAlias)}.${C.identifier(a)}`;
2746
2746
  }
2747
2747
  return this.dateTimeBuilder.buildTimeDimensionExpression(o.dimensions[a].sql, e.granularity, n);
2748
2748
  }
@@ -2762,8 +2762,8 @@ var U = class e {
2762
2762
  if (t.dimensions) for (let e of t.dimensions) {
2763
2763
  let [t, a] = e.split("."), o = i.get(t);
2764
2764
  if (o && o.dimensions && o.dimensions[a]) {
2765
- let t = o.dimensions[a], i = f(t.sql, n);
2766
- r[e] = T`${i}`.as(e);
2765
+ let t = o.dimensions[a], i = l(t.sql, n);
2766
+ r[e] = C`${i}`.as(e);
2767
2767
  }
2768
2768
  }
2769
2769
  if (t.measures) {
@@ -2772,7 +2772,7 @@ var U = class e {
2772
2772
  let t = e.get(n);
2773
2773
  if (t && typeof t == "function") {
2774
2774
  let e = t();
2775
- r[n] = T`${e}`.as(n);
2775
+ r[n] = C`${e}`.as(n);
2776
2776
  }
2777
2777
  }
2778
2778
  }
@@ -2780,10 +2780,10 @@ var U = class e {
2780
2780
  let [t, a] = e.dimension.split("."), o = i.get(t);
2781
2781
  if (o && o.dimensions && o.dimensions[a]) {
2782
2782
  let t = o.dimensions[a], i = this.buildTimeDimensionExpression(t.sql, e.granularity, n);
2783
- r[e.dimension] = T`${i}`.as(e.dimension);
2783
+ r[e.dimension] = C`${i}`.as(e.dimension);
2784
2784
  }
2785
2785
  }
2786
- return Object.keys(r).length === 0 && (r.count = pe()), r;
2786
+ return Object.keys(r).length === 0 && (r.count = T()), r;
2787
2787
  }
2788
2788
  buildCalculatedMeasure(e, t, n, r, i) {
2789
2789
  return this.measureBuilder.buildCalculatedMeasure(e, t, n, r, i);
@@ -2829,8 +2829,8 @@ var U = class e {
2829
2829
  return;
2830
2830
  }
2831
2831
  }
2832
- let c = s.dimensions[o], l = f(c.sql, n), u = this.buildDateRangeCondition(l, e.dateRange);
2833
- u && i.push(u);
2832
+ let c = s.dimensions[o], u = l(c.sql, n), d = this.buildDateRangeCondition(u, e.dateRange);
2833
+ d && i.push(d);
2834
2834
  }
2835
2835
  cubeIsInCTE(e, t) {
2836
2836
  return !!t?.preAggregationCTEs?.some((t) => t.cube.name === e);
@@ -2843,23 +2843,23 @@ var U = class e {
2843
2843
  }
2844
2844
  return i;
2845
2845
  }
2846
- processFilter(e, t, r, i, a) {
2847
- if ("and" in e || "or" in e) {
2848
- let o = e;
2846
+ processFilter(t, n, r, i, a) {
2847
+ if ("and" in t || "or" in t) {
2848
+ let o = t;
2849
2849
  if (o.and) {
2850
- let e = o.and.map((e) => this.processFilter(e, t, r, i, a)).filter((e) => e !== null);
2851
- return e.length > 0 ? n(...e) : null;
2850
+ let e = o.and.map((e) => this.processFilter(e, n, r, i, a)).filter((e) => e !== null);
2851
+ return e.length > 0 ? w(...e) : null;
2852
2852
  }
2853
2853
  if (o.or) {
2854
- let e = o.or.map((e) => this.processFilter(e, t, r, i, a)).filter((e) => e !== null);
2855
- return e.length > 0 ? C(...e) : null;
2854
+ let t = o.or.map((e) => this.processFilter(e, n, r, i, a)).filter((e) => e !== null);
2855
+ return t.length > 0 ? e(...t) : null;
2856
2856
  }
2857
2857
  }
2858
- let o = e, [s, c] = o.member.split("."), l = t.get(s);
2858
+ let o = t, [s, c] = o.member.split("."), l = n.get(s);
2859
2859
  if (!l) return null;
2860
2860
  let u = l.dimensions[c], d = l.measures[c], f = u || d;
2861
2861
  if (!f) return null;
2862
- if (i === "where" && u) return this.processWhereDimensionFilter(e, o, u, f, s, r, a);
2862
+ if (i === "where" && u) return this.processWhereDimensionFilter(t, o, u, f, s, r, a);
2863
2863
  if (i === "where" && d) return null;
2864
2864
  if (i === "having" && d) {
2865
2865
  let e = this.buildHavingMeasureExpression(s, c, d, r, a);
@@ -2874,7 +2874,7 @@ var U = class e {
2874
2874
  let t = M(e), n = a.filterCache.get(t);
2875
2875
  if (n) return n;
2876
2876
  }
2877
- let c = s ? f(n.sql, a) : typeof n.sql == "function" ? n.sql(a) : n.sql;
2877
+ let c = s ? l(n.sql, a) : typeof n.sql == "function" ? n.sql(a) : n.sql;
2878
2878
  return this.buildFilterCondition(c, t.operator, t.values, r, t.dateRange);
2879
2879
  }
2880
2880
  buildFilterCondition(e, t, n, r, i) {
@@ -2894,12 +2894,12 @@ var U = class e {
2894
2894
  ];
2895
2895
  if (e.order && Object.keys(e.order).length > 0) for (let [t, i] of Object.entries(e.order)) {
2896
2896
  if (!r.includes(t)) throw Error(`Cannot order by '${t}': field is not selected in the query`);
2897
- let e = i === "desc" ? fe(T.identifier(t)) : de(T.identifier(t));
2897
+ let e = i === "desc" ? pe(C.identifier(t)) : fe(C.identifier(t));
2898
2898
  n.push(e);
2899
2899
  }
2900
2900
  if (e.timeDimensions && e.timeDimensions.length > 0) {
2901
2901
  let t = new Set(Object.keys(e.order || {})), r = [...e.timeDimensions].sort((e, t) => e.dimension.localeCompare(t.dimension));
2902
- for (let e of r) t.has(e.dimension) || n.push(de(T.identifier(e.dimension)));
2902
+ for (let e of r) t.has(e.dimension) || n.push(fe(C.identifier(e.dimension)));
2903
2903
  }
2904
2904
  return n;
2905
2905
  }
@@ -2945,7 +2945,7 @@ var U = class e {
2945
2945
  let e = /* @__PURE__ */ new Map();
2946
2946
  for (let [t, n] of this.cubes) if (n.joins) for (let [, r] of Object.entries(n.joins)) {
2947
2947
  if (r.relationship === "belongsToMany") continue;
2948
- let n = o(r.targetCube, this.cubes);
2948
+ let n = h(r.targetCube, this.cubes);
2949
2949
  if (!n) continue;
2950
2950
  let i = n.name, a = e.get(i);
2951
2951
  a || (a = [], e.set(i, a)), a.push({
@@ -2980,7 +2980,7 @@ var U = class e {
2980
2980
  neighbourSteps(e, t) {
2981
2981
  let n = [], r = this.cubes.get(e);
2982
2982
  if (r?.joins) for (let [, t] of Object.entries(r.joins)) {
2983
- let r = o(t.targetCube, this.cubes);
2983
+ let r = h(t.targetCube, this.cubes);
2984
2984
  if (!r) continue;
2985
2985
  let i = r.name;
2986
2986
  n.push({
@@ -3109,13 +3109,13 @@ var U = class e {
3109
3109
  }
3110
3110
  return null;
3111
3111
  }
3112
- buildJoinCondition(e, t, r) {
3113
- let i = [];
3114
- for (let n of e.on) {
3115
- let e = t ? T`${T.identifier(t)}.${T.identifier(n.source.name)}` : g(n.source), a = r ? T`${T.identifier(r)}.${T.identifier(n.target.name)}` : g(n.target), o = n.as || x;
3116
- i.push(o(e, a));
3112
+ buildJoinCondition(e, t, n) {
3113
+ let r = [];
3114
+ for (let i of e.on) {
3115
+ let e = t ? C`${C.identifier(t)}.${C.identifier(i.source.name)}` : m(i.source), a = n ? C`${C.identifier(n)}.${C.identifier(i.target.name)}` : m(i.target), o = i.as || b;
3116
+ r.push(o(e, a));
3117
3117
  }
3118
- return n(...i);
3118
+ return w(...r);
3119
3119
  }
3120
3120
  getReachableCubes(e) {
3121
3121
  let t = /* @__PURE__ */ new Set([e]), n = [e];
@@ -3181,35 +3181,35 @@ var yn = class {
3181
3181
  constructor(e) {
3182
3182
  this.resolverCache = e;
3183
3183
  }
3184
- buildJoinPlan(e, n, r, i, a) {
3185
- let o = this.resolverCache.get(e), s = [], c = /* @__PURE__ */ new Set([n.name]), l = /* @__PURE__ */ new Set();
3186
- if (a.measures) for (let e of a.measures) {
3184
+ buildJoinPlan(e, t, n, r, i) {
3185
+ let a = this.resolverCache.get(e), o = [], s = /* @__PURE__ */ new Set([t.name]), c = /* @__PURE__ */ new Set();
3186
+ if (i.measures) for (let e of i.measures) {
3187
3187
  let [t] = e.split(".");
3188
- l.add(t);
3189
- }
3190
- let u = G(a), d = /* @__PURE__ */ new Set();
3191
- for (let t of l) t !== n.name && this.findHasManyJoinDef(n, t, e) && d.add(t);
3192
- let f = r.filter((e) => e !== n.name);
3193
- for (let r of f) {
3194
- if (c.has(r)) continue;
3195
- let i = new Set([...c].filter((e) => !d.has(e))), a = o.findPathPreferring(n.name, r, u, i);
3196
- if (!a || a.length === 0) throw Error(t("server.errors.noJoinPath", {
3197
- fromCube: n.name,
3198
- toCube: r
3188
+ c.add(t);
3189
+ }
3190
+ let l = G(i), u = /* @__PURE__ */ new Set();
3191
+ for (let n of c) n !== t.name && this.findHasManyJoinDef(t, n, e) && u.add(n);
3192
+ let d = n.filter((e) => e !== t.name);
3193
+ for (let n of d) {
3194
+ if (s.has(n)) continue;
3195
+ let r = new Set([...s].filter((e) => !u.has(e))), i = a.findPathPreferring(t.name, n, l, r);
3196
+ if (!i || i.length === 0) throw Error(S("server.errors.noJoinPath", {
3197
+ fromCube: t.name,
3198
+ toCube: n
3199
3199
  }));
3200
- for (let { fromCube: n, toCube: r, joinDef: i, reversed: o } of a) {
3201
- if (c.has(r)) continue;
3202
- let a = e.get(r);
3203
- if (!a) throw Error(t("server.errors.cubeNotFound", { cubeName: r }));
3204
- s.push(this.buildJoinRef(a, r, n, i, o)), c.add(r);
3200
+ for (let { fromCube: t, toCube: n, joinDef: r, reversed: a } of i) {
3201
+ if (s.has(n)) continue;
3202
+ let i = e.get(n);
3203
+ if (!i) throw Error(S("server.errors.cubeNotFound", { cubeName: n }));
3204
+ o.push(this.buildJoinRef(i, n, t, r, a)), s.add(n);
3205
3205
  }
3206
3206
  }
3207
- return s;
3207
+ return o;
3208
3208
  }
3209
3209
  buildJoinRef(e, t, n, r, i) {
3210
- let a = i ? v(r.relationship) : r.relationship;
3210
+ let a = i ? f(r.relationship) : r.relationship;
3211
3211
  if (a === "belongsToMany" && r.through) {
3212
- let i = m("belongsToMany", r.sqlJoinType);
3212
+ let i = p("belongsToMany", r.sqlJoinType);
3213
3213
  return {
3214
3214
  target: {
3215
3215
  name: e.name,
@@ -3227,7 +3227,7 @@ var yn = class {
3227
3227
  }
3228
3228
  };
3229
3229
  }
3230
- let o = m(a, r.sqlJoinType);
3230
+ let o = p(a, r.sqlJoinType);
3231
3231
  return {
3232
3232
  target: {
3233
3233
  name: e.name,
@@ -3242,7 +3242,7 @@ var yn = class {
3242
3242
  findHasManyJoinDef(e, t, n) {
3243
3243
  if (!e.joins) return null;
3244
3244
  for (let [, r] of Object.entries(e.joins)) {
3245
- let e = o(r.targetCube, n);
3245
+ let e = h(r.targetCube, n);
3246
3246
  if (e && e.name === t && r.relationship === "hasMany") return r;
3247
3247
  }
3248
3248
  return null;
@@ -3293,7 +3293,7 @@ function Sn(e) {
3293
3293
  function Cn(e, t, n) {
3294
3294
  if (!e.joins) return null;
3295
3295
  for (let [, r] of Object.entries(e.joins)) {
3296
- let e = o(r.targetCube, n);
3296
+ let e = h(r.targetCube, n);
3297
3297
  if (e && e.name === t) return r;
3298
3298
  }
3299
3299
  return null;
@@ -3365,7 +3365,7 @@ var En = class {
3365
3365
  if (l.length === 0) return null;
3366
3366
  let u = this.resolveCTEJoinKeys(n, r, a, i);
3367
3367
  if (!u) return null;
3368
- let { joinKeys: d, intermediateJoins: f } = u, p = this.filterPropagation.findPropagatingFilters(i, a, n), { aggregateMeasures: m, requiredBaseMeasures: h } = V(l, /* @__PURE__ */ new Map([[a.name, a]])), g = [.../* @__PURE__ */ new Set([...m, ...Array.from(h).filter((e) => e.startsWith(a.name + "."))])];
3368
+ let { joinKeys: d, intermediateJoins: f } = u, p = this.filterPropagation.findPropagatingFilters(i, a, n), { aggregateMeasures: m, requiredBaseMeasures: h } = cn(l, /* @__PURE__ */ new Map([[a.name, a]])), g = [.../* @__PURE__ */ new Set([...m, ...Array.from(h).filter((e) => e.startsWith(a.name + "."))])];
3369
3369
  if (g.length === 0) return null;
3370
3370
  let _ = this.expandCalculatedMeasureDependencies(a, g), v = this.findDownstreamJoinKeys(a, i, n);
3371
3371
  return {
@@ -3413,7 +3413,7 @@ var En = class {
3413
3413
  joinDef: e.joinDef,
3414
3414
  reversed: e.reversed
3415
3415
  }));
3416
- if (!s.slice(0, -1).some((e) => (e.reversed ? v(e.joinDef.relationship) : e.joinDef.relationship) === "hasMany")) return {
3416
+ if (!s.slice(0, -1).some((e) => (e.reversed ? f(e.joinDef.relationship) : e.joinDef.relationship) === "hasMany")) return {
3417
3417
  path: s,
3418
3418
  hasIntermediateHasMany: !1,
3419
3419
  intermediateJoins: [],
@@ -3458,7 +3458,7 @@ var En = class {
3458
3458
  let r = [], i = Tn(t, e.name);
3459
3459
  if (!e.joins) return r;
3460
3460
  for (let [, t] of Object.entries(e.joins)) {
3461
- let e = o(t.targetCube, n);
3461
+ let e = h(t.targetCube, n);
3462
3462
  if (!e) continue;
3463
3463
  let a = e.name;
3464
3464
  i.has(a) && r.push({
@@ -3518,11 +3518,11 @@ var En = class {
3518
3518
  for (let a of i) {
3519
3519
  if (a === t.name) continue;
3520
3520
  let i = n.get(a);
3521
- if (i?.joins) for (let [, s] of Object.entries(i.joins)) {
3522
- let c = o(s.targetCube, n);
3523
- if (!c || c.name !== t.name || s.relationship !== "hasMany") continue;
3524
- let l = this.buildPropagatingFilter(e, i, a, s);
3525
- l && r.push(l);
3521
+ if (i?.joins) for (let [, o] of Object.entries(i.joins)) {
3522
+ let s = h(o.targetCube, n);
3523
+ if (!s || s.name !== t.name || o.relationship !== "hasMany") continue;
3524
+ let c = this.buildPropagatingFilter(e, i, a, o);
3525
+ c && r.push(c);
3526
3526
  }
3527
3527
  }
3528
3528
  return r;
@@ -3696,7 +3696,7 @@ var En = class {
3696
3696
  }
3697
3697
  convertInternalPathToJoinPathSteps(e) {
3698
3698
  return e.map((e) => {
3699
- let t = e.reversed ? v(e.joinDef.relationship) : e.joinDef.relationship, n = m(t, e.joinDef.sqlJoinType), r = e.joinDef.on.map((e) => ({
3699
+ let t = e.reversed ? f(e.joinDef.relationship) : e.joinDef.relationship, n = p(t, e.joinDef.sqlJoinType), r = e.joinDef.on.map((e) => ({
3700
3700
  sourceColumn: e.source.name,
3701
3701
  targetColumn: e.target.name
3702
3702
  })), i = {
@@ -3787,7 +3787,7 @@ var En = class {
3787
3787
  };
3788
3788
  //#endregion
3789
3789
  //#region src/server/builders/cte-builder.ts
3790
- function K(e, t) {
3790
+ function An(e, t) {
3791
3791
  if (!t.joins) return e;
3792
3792
  for (let n of t.joins) switch (n.type || "left") {
3793
3793
  case "left":
@@ -3803,23 +3803,23 @@ function K(e, t) {
3803
3803
  }
3804
3804
  return e;
3805
3805
  }
3806
- var An = class {
3806
+ var jn = class {
3807
3807
  queryBuilder;
3808
3808
  constructor(e) {
3809
3809
  this.queryBuilder = e;
3810
3810
  }
3811
- buildPreAggregationCTE(e, t, r, i, a) {
3812
- let o = e.cube, s = o.sql(r), c = !!(e.intermediateJoins && e.intermediateJoins.length > 0), l = this.buildCTESelections(e, o, t, r, c);
3813
- if (Object.keys(l).length === 0) return null;
3814
- let u = r.db.select(l).from(s.from);
3815
- u = K(u, s), u = this.applyIntermediateJoins(u, e, r, c);
3816
- let d = this.buildCTEWhereConditions(e, o, t, r, i, a, s);
3817
- if (d.length > 0) {
3818
- let e = d.length === 1 ? d[0] : n(...d);
3819
- u = u.where(e);
3811
+ buildPreAggregationCTE(e, t, n, r, i) {
3812
+ let a = e.cube, o = a.sql(n), s = !!(e.intermediateJoins && e.intermediateJoins.length > 0), c = this.buildCTESelections(e, a, t, n, s);
3813
+ if (Object.keys(c).length === 0) return null;
3814
+ let l = n.db.select(c).from(o.from);
3815
+ l = An(l, o), l = this.applyIntermediateJoins(l, e, n, s);
3816
+ let u = this.buildCTEWhereConditions(e, a, t, n, r, i, o);
3817
+ if (u.length > 0) {
3818
+ let e = u.length === 1 ? u[0] : w(...u);
3819
+ l = l.where(e);
3820
3820
  }
3821
- let f = this.buildCTEGroupByFields(e, o, t, r, c);
3822
- return f.length > 0 && (u = u.groupBy(...f)), r.db.$with(e.cteAlias).as(u);
3821
+ let d = this.buildCTEGroupByFields(e, a, t, n, s);
3822
+ return d.length > 0 && (l = l.groupBy(...d)), n.db.$with(e.cteAlias).as(l);
3823
3823
  }
3824
3824
  buildCTESelections(e, t, n, r, i) {
3825
3825
  let a = {};
@@ -3833,7 +3833,7 @@ var An = class {
3833
3833
  }
3834
3834
  for (let r of t.joinKeys) if (r.targetColumnObj) {
3835
3835
  e[r.targetColumn] = r.targetColumnObj;
3836
- for (let [t, i] of Object.entries(n.dimensions || {})) i.sql === r.targetColumnObj && t !== r.targetColumn && (e[t] = T`${r.targetColumnObj}`.as(t));
3836
+ for (let [t, i] of Object.entries(n.dimensions || {})) i.sql === r.targetColumnObj && t !== r.targetColumn && (e[t] = C`${r.targetColumnObj}`.as(t));
3837
3837
  }
3838
3838
  }
3839
3839
  addDownstreamKeySelections(e, t) {
@@ -3843,7 +3843,7 @@ var An = class {
3843
3843
  let i = /* @__PURE__ */ new Map([[n.name, n]]), a = this.queryBuilder.buildResolvedMeasures(t.measures, i, r);
3844
3844
  for (let n of t.measures) {
3845
3845
  let [, t] = n.split("."), r = a.get(n);
3846
- r && (e[t] = T`${r()}`.as(t));
3846
+ r && (e[t] = C`${r()}`.as(t));
3847
3847
  }
3848
3848
  }
3849
3849
  addDimensionSelections(e, t, n, r) {
@@ -3855,23 +3855,23 @@ var An = class {
3855
3855
  sql: t.dimensions[o].sql,
3856
3856
  type: "number"
3857
3857
  }, r);
3858
- e[o] = T`${n}`.as(o);
3858
+ e[o] = C`${n}`.as(o);
3859
3859
  }
3860
3860
  }
3861
3861
  for (let a of n.timeDimensions || []) {
3862
3862
  let [n, o] = a.dimension.split(".");
3863
3863
  if (n === i && t.dimensions?.[o]) {
3864
3864
  let n = this.queryBuilder.buildTimeDimensionExpression(t.dimensions[o].sql, a.granularity, r);
3865
- e[o] = T`${n}`.as(o);
3865
+ e[o] = C`${n}`.as(o);
3866
3866
  }
3867
3867
  }
3868
3868
  }
3869
- applyIntermediateJoins(e, t, r, i) {
3870
- if (!i || !t.intermediateJoins) return e;
3871
- let a = [...t.intermediateJoins].reverse();
3872
- for (let t of a) {
3873
- let i = t.cube.sql(r), a = [x(t.cteJoinColumn, t.joinDef.on[0]?.target)];
3874
- i.where && a.push(i.where), e = e.leftJoin(i.from, n(...a));
3869
+ applyIntermediateJoins(e, t, n, r) {
3870
+ if (!r || !t.intermediateJoins) return e;
3871
+ let i = [...t.intermediateJoins].reverse();
3872
+ for (let t of i) {
3873
+ let r = t.cube.sql(n), i = [b(t.cteJoinColumn, t.joinDef.on[0]?.target)];
3874
+ r.where && i.push(r.where), e = e.leftJoin(r.from, w(...i));
3875
3875
  }
3876
3876
  return e;
3877
3877
  }
@@ -3919,7 +3919,7 @@ var An = class {
3919
3919
  }, e, i);
3920
3920
  for (let e of n.dimensions || []) {
3921
3921
  let [n, i] = e.split(".");
3922
- n === a && t.dimensions?.[i] && o.push(f(t.dimensions[i].sql, r));
3922
+ n === a && t.dimensions?.[i] && o.push(l(t.dimensions[i].sql, r));
3923
3923
  }
3924
3924
  for (let e of n.timeDimensions || []) {
3925
3925
  let [n, i] = e.dimension.split(".");
@@ -3934,67 +3934,67 @@ var An = class {
3934
3934
  } else for (let n of t.joinKeys) n.targetColumnObj && e(n.targetColumnObj);
3935
3935
  if (t.downstreamJoinKeys) for (let n of t.downstreamJoinKeys) for (let t of n.joinKeys) t.sourceColumnObj && e(t.sourceColumnObj);
3936
3936
  }
3937
- buildCTEJoinCondition(e, t, r) {
3938
- let i = r.preAggregationCTEs?.find((t) => t.cube.name === e.cube.name);
3939
- if (!i) throw Error(`CTE info not found for cube ${e.cube.name}`);
3940
- let a = [];
3941
- if (i.intermediateJoins && i.intermediateJoins.length > 0) {
3942
- let e = i.intermediateJoins[0], n = this.resolveCTEJoinSourceColumn(i.joinKeys[0], i, r), o = T`${T.identifier(t)}.${T.identifier(e.primaryJoinColumn.name)}`;
3943
- a.push(x(n, o));
3944
- } else for (let e of i.joinKeys) {
3945
- let n = this.resolveCTEJoinSourceColumn(e, i, r), o = T`${T.identifier(t)}.${T.identifier(e.targetColumn)}`;
3946
- a.push(x(n, o));
3937
+ buildCTEJoinCondition(e, t, n) {
3938
+ let r = n.preAggregationCTEs?.find((t) => t.cube.name === e.cube.name);
3939
+ if (!r) throw Error(`CTE info not found for cube ${e.cube.name}`);
3940
+ let i = [];
3941
+ if (r.intermediateJoins && r.intermediateJoins.length > 0) {
3942
+ let e = r.intermediateJoins[0], a = this.resolveCTEJoinSourceColumn(r.joinKeys[0], r, n), o = C`${C.identifier(t)}.${C.identifier(e.primaryJoinColumn.name)}`;
3943
+ i.push(b(a, o));
3944
+ } else for (let e of r.joinKeys) {
3945
+ let a = this.resolveCTEJoinSourceColumn(e, r, n), o = C`${C.identifier(t)}.${C.identifier(e.targetColumn)}`;
3946
+ i.push(b(a, o));
3947
3947
  }
3948
- return a.length === 1 ? a[0] : n(...a);
3948
+ return i.length === 1 ? i[0] : w(...i);
3949
3949
  }
3950
3950
  resolveCTEJoinSourceColumn(e, t, n) {
3951
3951
  if (!e) throw Error(`Missing join key while building CTE join condition for '${t.cube.name}'`);
3952
- let r = e.sourceColumnObj || T.identifier(e.sourceColumn);
3952
+ let r = e.sourceColumnObj || C.identifier(e.sourceColumn);
3953
3953
  if (!e.sourceColumnObj || !n.preAggregationCTEs) return r;
3954
3954
  for (let r of n.preAggregationCTEs) if (r.cube.name !== t.cube.name) {
3955
- for (let [t, n] of Object.entries(r.cube.dimensions || {})) if (typeof n.sql != "function" && n.sql === e.sourceColumnObj) return T`${T.identifier(r.cteAlias)}.${T.identifier(t)}`;
3955
+ for (let [t, n] of Object.entries(r.cube.dimensions || {})) if (typeof n.sql != "function" && n.sql === e.sourceColumnObj) return C`${C.identifier(r.cteAlias)}.${C.identifier(t)}`;
3956
3956
  }
3957
3957
  return r;
3958
3958
  }
3959
3959
  buildPropagatingFilterSubquery(e, t) {
3960
- let r = e.sourceCube, i = r.sql(t), a = [];
3961
- if (i.where && a.push(i.where), e.preBuiltFilterSQL) a.push(e.preBuiltFilterSQL);
3960
+ let n = e.sourceCube, r = n.sql(t), i = [];
3961
+ if (r.where && i.push(r.where), e.preBuiltFilterSQL) i.push(e.preBuiltFilterSQL);
3962
3962
  else {
3963
- let n = { filters: e.filters }, i = /* @__PURE__ */ new Map([[r.name, r]]), o = this.queryBuilder.buildWhereConditions(i, n, t);
3964
- a.push(...o);
3963
+ let r = { filters: e.filters }, a = /* @__PURE__ */ new Map([[n.name, n]]), o = this.queryBuilder.buildWhereConditions(a, r, t);
3964
+ i.push(...o);
3965
3965
  }
3966
- if (a.length === 0) return null;
3967
- let o = a.length === 1 ? a[0] : n(...a), s = e.joinConditions;
3968
- if (s.length === 1) {
3969
- let { source: e, target: n } = s[0], r = t.db.select({ pk: e }).from(i.from);
3970
- return r = K(r, i), r = r.where(o), T`${n} IN ${r}`;
3966
+ if (i.length === 0) return null;
3967
+ let a = i.length === 1 ? i[0] : w(...i), o = e.joinConditions;
3968
+ if (o.length === 1) {
3969
+ let { source: e, target: n } = o[0], i = t.db.select({ pk: e }).from(r.from);
3970
+ return i = An(i, r), i = i.where(a), C`${n} IN ${i}`;
3971
3971
  }
3972
3972
  {
3973
- let e = s.map((e) => x(e.source, e.target)), r = n(...e, o), a = t.db.select({ one: T`1` }).from(i.from);
3974
- return a = K(a, i), a = a.where(r), T`EXISTS ${a}`;
3973
+ let e = o.map((e) => b(e.source, e.target)), n = w(...e, a), i = t.db.select({ one: C`1` }).from(r.from);
3974
+ return i = An(i, r), i = i.where(n), C`EXISTS ${i}`;
3975
3975
  }
3976
3976
  }
3977
3977
  };
3978
3978
  //#endregion
3979
3979
  //#region src/server/execution/annotation-builder.ts
3980
- function jn(e, t) {
3981
- let n = Mn(e);
3980
+ function Mn(e, t) {
3981
+ let n = Nn(e);
3982
3982
  return {
3983
- measures: Pn(t, n),
3984
- dimensions: Fn(t, n),
3983
+ measures: Fn(t, n),
3984
+ dimensions: In(t, n),
3985
3985
  segments: {},
3986
- timeDimensions: In(t, n)
3986
+ timeDimensions: Ln(t, n)
3987
3987
  };
3988
3988
  }
3989
- function Mn(e) {
3989
+ function Nn(e) {
3990
3990
  let t = [e.primaryCube].filter(Boolean);
3991
3991
  if (e.joinCubes && e.joinCubes.length > 0 && t.push(...e.joinCubes.map((e) => e.cube).filter(Boolean)), e.multiFactMerge?.groups?.length) for (let n of e.multiFactMerge.groups) n.queryPlan.primaryCube && t.push(n.queryPlan.primaryCube), n.queryPlan.joinCubes?.length && t.push(...n.queryPlan.joinCubes.map((e) => e.cube).filter(Boolean));
3992
3992
  return t;
3993
3993
  }
3994
- function Nn(e, t, n) {
3994
+ function Pn(e, t, n) {
3995
3995
  return e.find((e) => e?.name === t)?.dimensions?.[n];
3996
3996
  }
3997
- function Pn(e, t) {
3997
+ function Fn(e, t) {
3998
3998
  let n = {};
3999
3999
  if (!e.measures) return n;
4000
4000
  for (let r of e.measures) {
@@ -4007,11 +4007,11 @@ function Pn(e, t) {
4007
4007
  }
4008
4008
  return n;
4009
4009
  }
4010
- function Fn(e, t) {
4010
+ function In(e, t) {
4011
4011
  let n = {};
4012
4012
  if (!e.dimensions) return n;
4013
4013
  for (let r of e.dimensions) {
4014
- let [e, i] = r.split("."), a = Nn(t, e, i);
4014
+ let [e, i] = r.split("."), a = Pn(t, e, i);
4015
4015
  a && (n[r] = {
4016
4016
  title: a.title || i,
4017
4017
  shortTitle: a.title || i,
@@ -4020,11 +4020,11 @@ function Fn(e, t) {
4020
4020
  }
4021
4021
  return n;
4022
4022
  }
4023
- function In(e, t) {
4023
+ function Ln(e, t) {
4024
4024
  let n = {};
4025
4025
  if (!e.timeDimensions) return n;
4026
4026
  for (let r of e.timeDimensions) {
4027
- let [e, i] = r.dimension.split("."), a = Nn(t, e, i);
4027
+ let [e, i] = r.dimension.split("."), a = Pn(t, e, i);
4028
4028
  a && (n[r.dimension] = {
4029
4029
  title: a.title || i,
4030
4030
  shortTitle: a.title || i,
@@ -4036,7 +4036,7 @@ function In(e, t) {
4036
4036
  }
4037
4037
  //#endregion
4038
4038
  //#region src/shared/date-utils.ts
4039
- function Ln(e) {
4039
+ function Rn(e) {
4040
4040
  let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = t.getUTCFullYear(), i = t.getUTCMonth(), a = t.getUTCDate(), o = t.getUTCDay();
4041
4041
  if (n === "today") {
4042
4042
  let e = new Date(t);
@@ -4151,13 +4151,13 @@ function Ln(e) {
4151
4151
  }
4152
4152
  //#endregion
4153
4153
  //#region src/server/gap-filler.ts
4154
- var Rn = 1e4;
4155
- function zn(e, t, n) {
4156
- let r = [], i = Bn(new Date(e), n), a = Bn(new Date(t), n);
4157
- for (; i <= a && r.length < 1e4;) r.push(new Date(i)), i = Vn(i, n);
4154
+ var zn = 1e4;
4155
+ function Bn(e, t, n) {
4156
+ let r = [], i = Vn(new Date(e), n), a = Vn(new Date(t), n);
4157
+ for (; i <= a && r.length < 1e4;) r.push(new Date(i)), i = Hn(i, n);
4158
4158
  return r;
4159
4159
  }
4160
- function Bn(e, t) {
4160
+ function Vn(e, t) {
4161
4161
  let n = new Date(e);
4162
4162
  switch (t) {
4163
4163
  case "second":
@@ -4189,7 +4189,7 @@ function Bn(e, t) {
4189
4189
  }
4190
4190
  return n;
4191
4191
  }
4192
- function Vn(e, t) {
4192
+ function Hn(e, t) {
4193
4193
  let n = new Date(e);
4194
4194
  switch (t) {
4195
4195
  case "second":
@@ -4217,68 +4217,68 @@ function Vn(e, t) {
4217
4217
  }
4218
4218
  return n;
4219
4219
  }
4220
- function Hn(e, t) {
4220
+ function Un(e, t) {
4221
4221
  let n = null;
4222
4222
  if (e instanceof Date) n = e;
4223
4223
  else if (typeof e == "string") {
4224
4224
  let t = new Date(e);
4225
4225
  isNaN(t.getTime()) || (n = t);
4226
4226
  }
4227
- return !n || isNaN(n.getTime()) ? null : Bn(n, t).toISOString();
4227
+ return !n || isNaN(n.getTime()) ? null : Vn(n, t).toISOString();
4228
4228
  }
4229
- function Un(e, t) {
4229
+ function Wn(e, t) {
4230
4230
  return t.length === 0 ? "__all__" : t.map((t) => String(e[t] ?? "")).join("|||");
4231
4231
  }
4232
- function Wn(e, t) {
4233
- let { timeDimensionKey: n, granularity: r, dateRange: i, dimensions: a } = t, o = zn(i[0], i[1], r);
4232
+ function Gn(e, t) {
4233
+ let { timeDimensionKey: n, granularity: r, dateRange: i, dimensions: a } = t, o = Bn(i[0], i[1], r);
4234
4234
  if (o.length === 0) return e;
4235
- if (o.length >= 1e4) return console.warn(`[drizzle-cube] Skipping gap filling for "${n}": the ${r} range exceeds the ${Rn}-bucket limit. Returning unfilled data.`), e;
4236
- let s = Gn(e, n, r, a), c = [];
4235
+ if (o.length >= 1e4) return console.warn(`[drizzle-cube] Skipping gap filling for "${n}": the ${r} range exceeds the ${zn}-bucket limit. Returning unfilled data.`), e;
4236
+ let s = Kn(e, n, r, a), c = [];
4237
4237
  for (let [e, n] of s) {
4238
4238
  let e = n.size > 0 ? n.values().next().value : null;
4239
4239
  for (let r of o) {
4240
4240
  let i = r.toISOString(), a = n.get(i);
4241
- c.push(a ?? Kn(i, e ?? null, t));
4241
+ c.push(a ?? qn(i, e ?? null, t));
4242
4242
  }
4243
4243
  }
4244
4244
  return c;
4245
4245
  }
4246
- function Gn(e, t, n, r) {
4246
+ function Kn(e, t, n, r) {
4247
4247
  let i = /* @__PURE__ */ new Map();
4248
4248
  for (let a of e) {
4249
- let e = Un(a, r), o = Hn(a[t], n) ?? String(a[t]), s = i.get(e);
4249
+ let e = Wn(a, r), o = Un(a[t], n) ?? String(a[t]), s = i.get(e);
4250
4250
  s || (s = /* @__PURE__ */ new Map(), i.set(e, s)), s.set(o, a);
4251
4251
  }
4252
4252
  return i.size === 0 && r.length === 0 && i.set("__all__", /* @__PURE__ */ new Map()), i;
4253
4253
  }
4254
- function Kn(e, t, n) {
4254
+ function qn(e, t, n) {
4255
4255
  let { timeDimensionKey: r, fillValue: i, measures: a, dimensions: o } = n, s = { [r]: e };
4256
4256
  if (t) for (let e of o) s[e] = t[e];
4257
4257
  for (let e of a) s[e] = i;
4258
4258
  return s;
4259
4259
  }
4260
- function q(e) {
4260
+ function K(e) {
4261
4261
  if (!e) return null;
4262
4262
  if (Array.isArray(e)) {
4263
4263
  if (e.length < 2) return null;
4264
4264
  let t = new Date(e[0]), n = new Date(e[1]);
4265
4265
  return isNaN(t.getTime()) || isNaN(n.getTime()) ? null : [t, n];
4266
4266
  }
4267
- let t = Ln(e);
4267
+ let t = Rn(e);
4268
4268
  if (t) return [t.start, t.end];
4269
4269
  let n = new Date(e);
4270
4270
  return isNaN(n.getTime()) ? null : [n, n];
4271
4271
  }
4272
- function qn(e, t, n) {
4272
+ function Jn(e, t, n) {
4273
4273
  if (!t.timeDimensions || t.timeDimensions.length === 0) return e;
4274
4274
  let r = t.timeDimensions.filter((e) => {
4275
- let n = e.fillMissingDates !== !1, r = !!e.granularity, i = e.dateRange || J(e.dimension, t.filters);
4275
+ let n = e.fillMissingDates !== !1, r = !!e.granularity, i = e.dateRange || q(e.dimension, t.filters);
4276
4276
  return n && r && i;
4277
4277
  });
4278
4278
  if (r.length === 0) return e;
4279
4279
  let i = t.fillMissingDatesValue === void 0 ? 0 : t.fillMissingDatesValue, a = new Set(t.timeDimensions.map((e) => e.dimension)), o = (t.dimensions || []).filter((e) => !a.has(e)), s = e;
4280
4280
  for (let e of r) {
4281
- let r = q(e.dateRange) || Jn(e.dimension, t.filters);
4281
+ let r = K(e.dateRange) || Yn(e.dimension, t.filters);
4282
4282
  if (!r) continue;
4283
4283
  let a = {
4284
4284
  timeDimensionKey: e.dimension,
@@ -4288,44 +4288,44 @@ function qn(e, t, n) {
4288
4288
  measures: n,
4289
4289
  dimensions: o
4290
4290
  };
4291
- s = Wn(s, a);
4291
+ s = Gn(s, a);
4292
4292
  }
4293
4293
  return s;
4294
4294
  }
4295
- function J(e, t) {
4295
+ function q(e, t) {
4296
4296
  if (!t) return null;
4297
4297
  for (let n of t) {
4298
4298
  if ("member" in n && "operator" in n && n.member === e && n.operator === "inDateRange") return n;
4299
4299
  if ("and" in n && n.and) {
4300
- let t = J(e, n.and);
4300
+ let t = q(e, n.and);
4301
4301
  if (t) return t;
4302
4302
  }
4303
4303
  if ("or" in n && n.or) {
4304
- let t = J(e, n.or);
4304
+ let t = q(e, n.or);
4305
4305
  if (t) return t;
4306
4306
  }
4307
4307
  }
4308
4308
  return null;
4309
4309
  }
4310
- function Jn(e, t) {
4311
- let n = J(e, t);
4310
+ function Yn(e, t) {
4311
+ let n = q(e, t);
4312
4312
  if (!n) return null;
4313
4313
  if (n.dateRange) {
4314
- let e = q(n.dateRange);
4314
+ let e = K(n.dateRange);
4315
4315
  if (e) return e;
4316
4316
  }
4317
4317
  let r = n.values;
4318
4318
  if (!r || r.length === 0) return null;
4319
4319
  if (r.length === 1 && typeof r[0] == "string") {
4320
- let e = Ln(r[0]);
4321
- return e ? [e.start, e.end] : q(r);
4320
+ let e = Rn(r[0]);
4321
+ return e ? [e.start, e.end] : K(r);
4322
4322
  }
4323
- return r.length >= 2 ? q(r) : null;
4323
+ return r.length >= 2 ? K(r) : null;
4324
4324
  }
4325
4325
  //#endregion
4326
4326
  //#region src/server/execution/result-post-processor.ts
4327
- function Yn(e, t, n) {
4328
- return qn(Array.isArray(e) ? e.map((e) => {
4327
+ function Xn(e, t, n) {
4328
+ return Jn(Array.isArray(e) ? e.map((e) => {
4329
4329
  let r = { ...e };
4330
4330
  if (t.timeDimensions) {
4331
4331
  for (let e of t.timeDimensions) if (e.dimension in r) {
@@ -4342,7 +4342,7 @@ function Yn(e, t, n) {
4342
4342
  }
4343
4343
  //#endregion
4344
4344
  //#region src/server/execution/filter-cache-preloader.ts
4345
- var Xn = class {
4345
+ var Zn = class {
4346
4346
  queryBuilder;
4347
4347
  constructor(e) {
4348
4348
  this.queryBuilder = e;
@@ -4364,8 +4364,8 @@ var Xn = class {
4364
4364
  "arrayOverlaps",
4365
4365
  "arrayContained"
4366
4366
  ].includes(e.operator)) return;
4367
- let o = l(a, r), s = this.queryBuilder.buildFilterConditionPublic(o, e.operator, e.values, a, e.dateRange);
4368
- s && t.set(i, s);
4367
+ let s = o(a, r), c = this.queryBuilder.buildFilterConditionPublic(s, e.operator, e.values, a, e.dateRange);
4368
+ c && t.set(i, c);
4369
4369
  }
4370
4370
  preloadTimeDimensionFilter(e, t, n, r) {
4371
4371
  if (!e.dateRange) return;
@@ -4373,78 +4373,78 @@ var Xn = class {
4373
4373
  if (t.has(i)) return;
4374
4374
  let a = this.resolveMemberDimension(e.dimension, n);
4375
4375
  if (!a) return;
4376
- let o = f(a.sql, r), s = this.queryBuilder.buildDateRangeCondition(o, e.dateRange);
4376
+ let o = l(a.sql, r), s = this.queryBuilder.buildDateRangeCondition(o, e.dateRange);
4377
4377
  s && t.set(i, s);
4378
4378
  }
4379
- }, Zn = class {
4379
+ }, Qn = class {
4380
4380
  builders;
4381
4381
  constructor(e) {
4382
4382
  this.builders = e;
4383
4383
  }
4384
4384
  resolveMode(e) {
4385
- let n = [];
4386
- if (this.builders.comparison.hasComparison(e) && n.push("comparison"), this.builders.funnel.hasFunnel(e) && n.push("funnel"), this.builders.flow.hasFlow(e) && n.push("flow"), this.builders.retention.hasRetention(e) && n.push("retention"), n.length === 0) return "regular";
4387
- if (n.length > 1) throw Error(t("server.errors.queryContainsMultipleModes", { modes: n.join(", ") }));
4388
- return n[0];
4389
- }
4390
- validateForMode(e, n, i) {
4391
- let a = () => {
4392
- let e = le(n, i);
4393
- if (!e.isValid) throw new r(t("server.errors.queryValidationFailed", { errors: e.errors.join(", ") }), e.issues);
4385
+ let t = [];
4386
+ if (this.builders.comparison.hasComparison(e) && t.push("comparison"), this.builders.funnel.hasFunnel(e) && t.push("funnel"), this.builders.flow.hasFlow(e) && t.push("flow"), this.builders.retention.hasRetention(e) && t.push("retention"), t.length === 0) return "regular";
4387
+ if (t.length > 1) throw Error(S("server.errors.queryContainsMultipleModes", { modes: t.join(", ") }));
4388
+ return t[0];
4389
+ }
4390
+ validateForMode(e, t, n) {
4391
+ let i = () => {
4392
+ let e = r(t, n);
4393
+ if (!e.isValid) throw new v(S("server.errors.queryValidationFailed", { errors: e.errors.join(", ") }), e.issues);
4394
4394
  };
4395
4395
  ({
4396
- regular: a,
4397
- comparison: a,
4396
+ regular: i,
4397
+ comparison: i,
4398
4398
  funnel: () => {
4399
- let e = this.builders.funnel.validateConfig(i.funnel, n);
4400
- if (!e.isValid) throw Error(t("server.errors.funnelValidationFailed", { errors: e.errors.join(", ") }));
4399
+ let e = this.builders.funnel.validateConfig(n.funnel, t);
4400
+ if (!e.isValid) throw Error(S("server.errors.funnelValidationFailed", { errors: e.errors.join(", ") }));
4401
4401
  },
4402
4402
  flow: () => {
4403
- let e = this.builders.flow.validateConfig(i.flow, n);
4404
- if (!e.isValid) throw Error(t("server.errors.flowValidationFailed", { errors: e.errors.join(", ") }));
4403
+ let e = this.builders.flow.validateConfig(n.flow, t);
4404
+ if (!e.isValid) throw Error(S("server.errors.flowValidationFailed", { errors: e.errors.join(", ") }));
4405
4405
  },
4406
4406
  retention: () => {
4407
- let e = this.builders.retention.validateConfig(i.retention, n);
4408
- if (!e.isValid) throw Error(t("server.errors.retentionValidationFailed", { errors: e.errors.join(", ") }));
4407
+ let e = this.builders.retention.validateConfig(n.retention, t);
4408
+ if (!e.isValid) throw Error(S("server.errors.retentionValidationFailed", { errors: e.errors.join(", ") }));
4409
4409
  }
4410
- })[ue(e)]();
4410
+ })[_(e)]();
4411
4411
  }
4412
4412
  };
4413
4413
  //#endregion
4414
4414
  //#region src/server/cache-utils.ts
4415
- function Qn(e, t, n = {}, r) {
4416
- let i = n.keyPrefix ?? "drizzle-cube:", a = $n(e), o = `${i}query:${ir(JSON.stringify(a))}`;
4415
+ function $n(e, t, n = {}, r) {
4416
+ let i = n.keyPrefix ?? "drizzle-cube:", a = er(e), o = `${i}query:${ar(JSON.stringify(a))}`;
4417
4417
  if (n.includeSecurityContext !== !1) {
4418
- let e = ir(n.securityContextSerializer ? n.securityContextSerializer(t) : JSON.stringify(X(t)));
4418
+ let e = ar(n.securityContextSerializer ? n.securityContextSerializer(t) : JSON.stringify(Y(t)));
4419
4419
  o += `:ctx:${e}`;
4420
4420
  }
4421
4421
  return r && (o += `:cubes:${r}`), o;
4422
4422
  }
4423
- function $n(e) {
4423
+ function er(e) {
4424
4424
  return {
4425
4425
  measures: e.measures ? [...e.measures].sort() : void 0,
4426
4426
  dimensions: e.dimensions ? [...e.dimensions].sort() : void 0,
4427
- filters: e.filters ? Y(e.filters) : void 0,
4428
- timeDimensions: e.timeDimensions ? rr(e.timeDimensions) : void 0,
4427
+ filters: e.filters ? J(e.filters) : void 0,
4428
+ timeDimensions: e.timeDimensions ? ir(e.timeDimensions) : void 0,
4429
4429
  limit: e.limit,
4430
4430
  offset: e.offset,
4431
- order: e.order ? X(e.order) : void 0,
4431
+ order: e.order ? Y(e.order) : void 0,
4432
4432
  fillMissingDatesValue: e.fillMissingDatesValue,
4433
4433
  ungrouped: e.ungrouped,
4434
4434
  total: e.total,
4435
- funnel: e.funnel ? er(e.funnel) : void 0,
4436
- flow: e.flow ? tr(e.flow) : void 0,
4437
- retention: e.retention ? nr(e.retention) : void 0
4435
+ funnel: e.funnel ? tr(e.funnel) : void 0,
4436
+ flow: e.flow ? nr(e.flow) : void 0,
4437
+ retention: e.retention ? rr(e.retention) : void 0
4438
4438
  };
4439
4439
  }
4440
- function er(e) {
4440
+ function tr(e) {
4441
4441
  return {
4442
4442
  bindingKey: e.bindingKey,
4443
4443
  timeDimension: e.timeDimension,
4444
4444
  steps: e.steps.map((e) => {
4445
4445
  let t = {
4446
4446
  name: e.name,
4447
- filter: e.filter ? Array.isArray(e.filter) ? Y(e.filter) : Y([e.filter])[0] : void 0,
4447
+ filter: e.filter ? Array.isArray(e.filter) ? J(e.filter) : J([e.filter])[0] : void 0,
4448
4448
  timeToConvert: e.timeToConvert
4449
4449
  };
4450
4450
  return "cube" in e && e.cube && (t.cube = e.cube), t;
@@ -4453,14 +4453,14 @@ function er(e) {
4453
4453
  globalTimeWindow: e.globalTimeWindow
4454
4454
  };
4455
4455
  }
4456
- function tr(e) {
4456
+ function nr(e) {
4457
4457
  return {
4458
4458
  bindingKey: e.bindingKey,
4459
4459
  timeDimension: e.timeDimension,
4460
4460
  eventDimension: e.eventDimension,
4461
4461
  startingStep: {
4462
4462
  name: e.startingStep.name,
4463
- filter: e.startingStep.filter ? Array.isArray(e.startingStep.filter) ? Y(e.startingStep.filter) : Y([e.startingStep.filter])[0] : void 0
4463
+ filter: e.startingStep.filter ? Array.isArray(e.startingStep.filter) ? J(e.startingStep.filter) : J([e.startingStep.filter])[0] : void 0
4464
4464
  },
4465
4465
  stepsBefore: e.stepsBefore,
4466
4466
  stepsAfter: e.stepsAfter,
@@ -4469,7 +4469,7 @@ function tr(e) {
4469
4469
  joinStrategy: e.joinStrategy
4470
4470
  };
4471
4471
  }
4472
- function nr(e) {
4472
+ function rr(e) {
4473
4473
  return {
4474
4474
  timeDimension: e.timeDimension,
4475
4475
  bindingKey: e.bindingKey,
@@ -4477,15 +4477,15 @@ function nr(e) {
4477
4477
  granularity: e.granularity,
4478
4478
  periods: e.periods,
4479
4479
  retentionType: e.retentionType,
4480
- cohortFilters: e.cohortFilters ? Array.isArray(e.cohortFilters) ? Y(e.cohortFilters) : Y([e.cohortFilters])[0] : void 0,
4481
- activityFilters: e.activityFilters ? Array.isArray(e.activityFilters) ? Y(e.activityFilters) : Y([e.activityFilters])[0] : void 0,
4480
+ cohortFilters: e.cohortFilters ? Array.isArray(e.cohortFilters) ? J(e.cohortFilters) : J([e.cohortFilters])[0] : void 0,
4481
+ activityFilters: e.activityFilters ? Array.isArray(e.activityFilters) ? J(e.activityFilters) : J([e.activityFilters])[0] : void 0,
4482
4482
  breakdownDimensions: e.breakdownDimensions
4483
4483
  };
4484
4484
  }
4485
- function Y(e) {
4485
+ function J(e) {
4486
4486
  return [...e].map((e) => {
4487
- if ("and" in e && e.and) return { and: Y(e.and) };
4488
- if ("or" in e && e.or) return { or: Y(e.or) };
4487
+ if ("and" in e && e.and) return { and: J(e.and) };
4488
+ if ("or" in e && e.or) return { or: J(e.or) };
4489
4489
  let t = e;
4490
4490
  return {
4491
4491
  ...t,
@@ -4493,7 +4493,7 @@ function Y(e) {
4493
4493
  };
4494
4494
  }).sort((e, t) => JSON.stringify(e).localeCompare(JSON.stringify(t)));
4495
4495
  }
4496
- function rr(e) {
4496
+ function ir(e) {
4497
4497
  return [...e].map((e) => ({
4498
4498
  dimension: e.dimension,
4499
4499
  granularity: e.granularity,
@@ -4505,10 +4505,10 @@ function rr(e) {
4505
4505
  }) : void 0
4506
4506
  })).sort((e, t) => e.dimension.localeCompare(t.dimension));
4507
4507
  }
4508
- function X(e) {
4509
- return typeof e != "object" || !e ? e : Array.isArray(e) ? e.map(X) : Object.keys(e).sort().reduce((t, n) => (t[n] = X(e[n]), t), {});
4508
+ function Y(e) {
4509
+ return typeof e != "object" || !e ? e : Array.isArray(e) ? e.map(Y) : Object.keys(e).sort().reduce((t, n) => (t[n] = Y(e[n]), t), {});
4510
4510
  }
4511
- function ir(e) {
4511
+ function ar(e) {
4512
4512
  let t = 2166136261, n = 2246822519, r = 3266489917, i = 668265263, a = 16777619;
4513
4513
  for (let o = 0; o < e.length; o++) {
4514
4514
  let s = e.charCodeAt(o);
@@ -4518,13 +4518,13 @@ function ir(e) {
4518
4518
  }
4519
4519
  //#endregion
4520
4520
  //#region src/server/execution/query-result-cache.ts
4521
- var ar = class {
4521
+ var or = class {
4522
4522
  cacheConfig;
4523
4523
  constructor(e) {
4524
4524
  this.cacheConfig = e;
4525
4525
  }
4526
4526
  generateKey(e, t, n) {
4527
- if (this.cacheConfig?.enabled !== !1 && this.cacheConfig?.provider) return Qn(e, t, this.cacheConfig, n);
4527
+ if (this.cacheConfig?.enabled !== !1 && this.cacheConfig?.provider) return $n(e, t, this.cacheConfig, n);
4528
4528
  }
4529
4529
  async lookup(e, t) {
4530
4530
  if (!(!e || !this.cacheConfig?.provider)) {
@@ -4578,13 +4578,13 @@ var ar = class {
4578
4578
  this.cacheConfig.onError?.(e, "set");
4579
4579
  }
4580
4580
  }
4581
- }, or = class {
4581
+ }, sr = class {
4582
4582
  dateTimeBuilder;
4583
4583
  constructor(e) {
4584
4584
  this.dateTimeBuilder = new I(e);
4585
4585
  }
4586
4586
  hasComparison(e) {
4587
- return b(e);
4587
+ return ue(e);
4588
4588
  }
4589
4589
  getComparisonTimeDimension(e) {
4590
4590
  return e.timeDimensions?.find((e) => e.compareDateRange && e.compareDateRange.length >= 2);
@@ -4709,7 +4709,7 @@ var ar = class {
4709
4709
  return typeof i == "string" && typeof a == "string" ? new Date(i).getTime() - new Date(a).getTime() : 0;
4710
4710
  });
4711
4711
  }
4712
- }, sr = class {
4712
+ }, cr = class {
4713
4713
  databaseAdapter;
4714
4714
  filterBuilder;
4715
4715
  dateTimeBuilder;
@@ -4717,93 +4717,93 @@ var ar = class {
4717
4717
  this.databaseAdapter = e, this.dateTimeBuilder = new I(e), this.filterBuilder = new B(e, this.dateTimeBuilder);
4718
4718
  }
4719
4719
  hasFunnel(e) {
4720
- return i(e);
4720
+ return a(e);
4721
4721
  }
4722
- validateConfig(e, n) {
4723
- let r = [];
4724
- e.steps.length < 2 && r.push(t("server.validation.funnel.minSteps")), this.validateBindingKey(e, n, r), this.validateTimeDimension(e, n, r);
4725
- for (let t = 0; t < e.steps.length; t++) this.validateStep(e, e.steps[t], t, n, r);
4722
+ validateConfig(e, t) {
4723
+ let n = [];
4724
+ e.steps.length < 2 && n.push(S("server.validation.funnel.minSteps")), this.validateBindingKey(e, t, n), this.validateTimeDimension(e, t, n);
4725
+ for (let r = 0; r < e.steps.length; r++) this.validateStep(e, e.steps[r], r, t, n);
4726
4726
  return {
4727
- isValid: r.length === 0,
4728
- errors: r
4727
+ isValid: n.length === 0,
4728
+ errors: n
4729
4729
  };
4730
4730
  }
4731
- validateBindingKey(e, n, r) {
4731
+ validateBindingKey(e, t, n) {
4732
4732
  if (typeof e.bindingKey == "string") {
4733
- let [i, a] = e.bindingKey.split(".");
4734
- if (!i || !a) {
4735
- r.push(t("server.validation.funnel.invalidBindingKeyFormat", { bindingKey: e.bindingKey }));
4733
+ let [r, i] = e.bindingKey.split(".");
4734
+ if (!r || !i) {
4735
+ n.push(S("server.validation.funnel.invalidBindingKeyFormat", { bindingKey: e.bindingKey }));
4736
4736
  return;
4737
4737
  }
4738
- let o = n.get(i);
4739
- o ? o.dimensions?.[a] || r.push(t("server.validation.funnel.bindingKeyDimNotFound", {
4740
- dimName: a,
4741
- cubeName: i
4742
- })) : r.push(t("server.validation.funnel.bindingKeyCubeNotFound", { cubeName: i }));
4738
+ let a = t.get(r);
4739
+ a ? a.dimensions?.[i] || n.push(S("server.validation.funnel.bindingKeyDimNotFound", {
4740
+ dimName: i,
4741
+ cubeName: r
4742
+ })) : n.push(S("server.validation.funnel.bindingKeyCubeNotFound", { cubeName: r }));
4743
4743
  return;
4744
4744
  }
4745
- if (Array.isArray(e.bindingKey)) for (let i of e.bindingKey) {
4746
- let e = n.get(i.cube);
4745
+ if (Array.isArray(e.bindingKey)) for (let r of e.bindingKey) {
4746
+ let e = t.get(r.cube);
4747
4747
  if (!e) {
4748
- r.push(t("server.validation.funnel.bindingKeyMappingCubeNotFound", { cubeName: i.cube }));
4748
+ n.push(S("server.validation.funnel.bindingKeyMappingCubeNotFound", { cubeName: r.cube }));
4749
4749
  continue;
4750
4750
  }
4751
- let [, a] = i.dimension.split(".");
4752
- e.dimensions?.[a] || r.push(t("server.validation.funnel.bindingKeyDimNotFound", {
4753
- dimName: a,
4754
- cubeName: i.cube
4751
+ let [, i] = r.dimension.split(".");
4752
+ e.dimensions?.[i] || n.push(S("server.validation.funnel.bindingKeyDimNotFound", {
4753
+ dimName: i,
4754
+ cubeName: r.cube
4755
4755
  }));
4756
4756
  }
4757
4757
  }
4758
- validateTimeDimension(e, n, r) {
4758
+ validateTimeDimension(e, t, n) {
4759
4759
  if (typeof e.timeDimension != "string") return;
4760
- let [i, a] = e.timeDimension.split(".");
4761
- if (!i || !a) {
4762
- r.push(t("server.validation.funnel.invalidTimeDimFormat", { timeDimension: e.timeDimension }));
4760
+ let [r, i] = e.timeDimension.split(".");
4761
+ if (!r || !i) {
4762
+ n.push(S("server.validation.funnel.invalidTimeDimFormat", { timeDimension: e.timeDimension }));
4763
4763
  return;
4764
4764
  }
4765
- let o = n.get(i);
4766
- o ? o.dimensions?.[a] || r.push(t("server.validation.funnel.timeDimNotFound", {
4767
- dimName: a,
4768
- cubeName: i
4769
- })) : r.push(t("server.validation.funnel.timeDimCubeNotFound", { cubeName: i }));
4770
- }
4771
- validateStep(e, n, r, i, a) {
4772
- n.name || a.push(t("server.validation.funnel.stepMustHaveName", { step: r })), "cube" in n && n.cube && !i.get(n.cube) && a.push(t("server.validation.funnel.stepCubeNotFound", {
4773
- step: r,
4774
- cube: n.cube
4775
- })), n.filter && this.validateStepFilters(e, n, r, i, a), n.timeToConvert && r > 0 && (/^P(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+(?:\.\d+)?S)?)?$/.test(n.timeToConvert) || a.push(t("server.validation.funnel.stepTimeToConvertFormat", {
4776
- step: r,
4777
- value: n.timeToConvert
4765
+ let a = t.get(r);
4766
+ a ? a.dimensions?.[i] || n.push(S("server.validation.funnel.timeDimNotFound", {
4767
+ dimName: i,
4768
+ cubeName: r
4769
+ })) : n.push(S("server.validation.funnel.timeDimCubeNotFound", { cubeName: r }));
4770
+ }
4771
+ validateStep(e, t, n, r, i) {
4772
+ t.name || i.push(S("server.validation.funnel.stepMustHaveName", { step: n })), "cube" in t && t.cube && !r.get(t.cube) && i.push(S("server.validation.funnel.stepCubeNotFound", {
4773
+ step: n,
4774
+ cube: t.cube
4775
+ })), t.filter && this.validateStepFilters(e, t, n, r, i), t.timeToConvert && n > 0 && (/^P(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+(?:\.\d+)?S)?)?$/.test(t.timeToConvert) || i.push(S("server.validation.funnel.stepTimeToConvertFormat", {
4776
+ step: n,
4777
+ value: t.timeToConvert
4778
4778
  })));
4779
4779
  }
4780
- validateStepFilters(e, n, r, i, a) {
4781
- let o;
4782
- "cube" in n && n.cube ? o = n.cube : typeof e.bindingKey == "string" && ([o] = e.bindingKey.split("."));
4783
- let s = o ? new W(i) : null, c = Array.isArray(n.filter) ? n.filter : [n.filter];
4784
- for (let e of c) {
4780
+ validateStepFilters(e, t, n, r, i) {
4781
+ let a;
4782
+ "cube" in t && t.cube ? a = t.cube : typeof e.bindingKey == "string" && ([a] = e.bindingKey.split("."));
4783
+ let o = a ? new W(r) : null, s = Array.isArray(t.filter) ? t.filter : [t.filter];
4784
+ for (let e of s) {
4785
4785
  if (!("member" in e)) continue;
4786
- let [n, c] = e.member.split("."), l = i.get(n);
4787
- if (!l) {
4788
- a.push(t("server.validation.funnel.stepFilterCubeNotFound", {
4789
- step: r,
4790
- cubeName: n
4786
+ let [t, s] = e.member.split("."), c = r.get(t);
4787
+ if (!c) {
4788
+ i.push(S("server.validation.funnel.stepFilterCubeNotFound", {
4789
+ step: n,
4790
+ cubeName: t
4791
4791
  }));
4792
4792
  continue;
4793
4793
  }
4794
- if (l.dimensions?.[c] || (l.measures?.[c] ? a.push(t("server.validation.funnel.stepFilterIsMeasure", {
4795
- step: r,
4796
- member: `${n}.${c}`
4797
- })) : a.push(t("server.validation.funnel.stepFilterMemberNotFound", {
4798
- step: r,
4799
- field: c,
4800
- cubeName: n
4801
- }))), o && n !== o && s) {
4802
- let e = s.findPath(o, n);
4803
- (!e || e.length === 0) && a.push(t("server.validation.funnel.stepFilterNoJoinPath", {
4804
- step: r,
4805
- member: `${n}.${c}`,
4806
- stepCube: o
4794
+ if (c.dimensions?.[s] || (c.measures?.[s] ? i.push(S("server.validation.funnel.stepFilterIsMeasure", {
4795
+ step: n,
4796
+ member: `${t}.${s}`
4797
+ })) : i.push(S("server.validation.funnel.stepFilterMemberNotFound", {
4798
+ step: n,
4799
+ field: s,
4800
+ cubeName: t
4801
+ }))), a && t !== a && o) {
4802
+ let e = o.findPath(a, t);
4803
+ (!e || e.length === 0) && i.push(S("server.validation.funnel.stepFilterNoJoinPath", {
4804
+ step: n,
4805
+ member: `${t}.${s}`,
4806
+ stepCube: a
4807
4807
  }));
4808
4808
  }
4809
4809
  }
@@ -4882,18 +4882,18 @@ var ar = class {
4882
4882
  };
4883
4883
  });
4884
4884
  }
4885
- resolveCubeForStep(e, n, r) {
4885
+ resolveCubeForStep(e, t, n) {
4886
4886
  if ("cube" in e && e.cube) {
4887
- let n = r.get(e.cube);
4888
- if (!n) throw Error(t("server.errors.funnel.cubeNotFoundForStep", { cube: e.cube }));
4889
- return n;
4887
+ let t = n.get(e.cube);
4888
+ if (!t) throw Error(S("server.errors.funnel.cubeNotFoundForStep", { cube: e.cube }));
4889
+ return t;
4890
4890
  }
4891
- if (typeof n.bindingKey == "string") {
4892
- let [e] = n.bindingKey.split("."), i = r.get(e);
4893
- if (!i) throw Error(t("server.errors.funnel.cubeNotFoundForBindingKey", { bindingKey: n.bindingKey }));
4894
- return i;
4891
+ if (typeof t.bindingKey == "string") {
4892
+ let [e] = t.bindingKey.split("."), r = n.get(e);
4893
+ if (!r) throw Error(S("server.errors.funnel.cubeNotFoundForBindingKey", { bindingKey: t.bindingKey }));
4894
+ return r;
4895
4895
  }
4896
- throw Error(t("server.errors.funnel.cannotResolveCubeForStep"));
4896
+ throw Error(S("server.errors.funnel.cannotResolveCubeForStep"));
4897
4897
  }
4898
4898
  resolveBindingKey(e, t, n) {
4899
4899
  return tn(e.bindingKey, t, n, $t("server.errors.funnel"));
@@ -4914,33 +4914,33 @@ var ar = class {
4914
4914
  let i = "and" in e || "or" in e, a = z(e);
4915
4915
  return i || a ? this.buildLogicalFilterCondition(e, a, t, n, r) : this.buildSimpleFilterCondition(e, t, n, r);
4916
4916
  }
4917
- buildLogicalFilterCondition(e, t, r, i, a) {
4918
- let o, s;
4919
- if (t) o = t.isAnd, s = t.filters;
4917
+ buildLogicalFilterCondition(e, t, n, r, i) {
4918
+ let a, o;
4919
+ if (t) a = t.isAnd, o = t.filters;
4920
4920
  else {
4921
4921
  let t = e;
4922
- o = "and" in t && !!t.and, s = t.and || t.or || [];
4922
+ a = "and" in t && !!t.and, o = t.and || t.or || [];
4923
4923
  }
4924
- let c = [];
4925
- for (let e of s) {
4926
- let t = this.buildFilterCondition(e, r, i, a);
4927
- t && c.push(t);
4924
+ let s = [];
4925
+ for (let e of o) {
4926
+ let t = this.buildFilterCondition(e, n, r, i);
4927
+ t && s.push(t);
4928
4928
  }
4929
- return c.length === 0 ? null : c.length === 1 ? c[0] : o ? n(...c) : T`(${T.join(c, T` OR `)})`;
4929
+ return s.length === 0 ? null : s.length === 1 ? s[0] : a ? w(...s) : C`(${C.join(s, C` OR `)})`;
4930
4930
  }
4931
4931
  buildSimpleFilterCondition(e, t, n, r) {
4932
- let [i, a] = e.member.split("."), o = e.dateRange !== void 0;
4933
- if (e.operator !== "set" && e.operator !== "notSet" && !o && (!e.values || e.values.length === 0 || e.values[0] === void 0 || e.values[0] === "")) return null;
4934
- let s = n.get(i);
4935
- if (!s) return null;
4932
+ let [i, a] = e.member.split("."), s = e.dateRange !== void 0;
4933
+ if (e.operator !== "set" && e.operator !== "notSet" && !s && (!e.values || e.values.length === 0 || e.values[0] === void 0 || e.values[0] === "")) return null;
4934
+ let c = n.get(i);
4935
+ if (!c) return null;
4936
4936
  if (i !== t.name) {
4937
4937
  let e = new W(n).findPath(t.name, i);
4938
4938
  if (!e || e.length === 0) return null;
4939
4939
  }
4940
- let c = s.dimensions?.[a];
4941
- if (!c) return null;
4942
- let u = l(c, r);
4943
- return this.filterBuilder.buildFilterCondition(u, e.operator, e.values || [], c, e.dateRange);
4940
+ let l = c.dimensions?.[a];
4941
+ if (!l) return null;
4942
+ let u = o(l, r);
4943
+ return this.filterBuilder.buildFilterCondition(u, e.operator, e.values || [], l, e.dateRange);
4944
4944
  }
4945
4945
  buildStepCTE(e, t, n) {
4946
4946
  return e.index === 0 ? this.buildFirstStepCTE(e, t) : this.buildSubsequentStepCTE(e, t, n);
@@ -4949,31 +4949,31 @@ var ar = class {
4949
4949
  let n = `step_${e.index}`, r = e.cube.sql(t), i = [];
4950
4950
  r.where && i.push(r.where), i.push(...e.filterConditions);
4951
4951
  let a = t.db.select({
4952
- binding_key: T`${e.bindingKeyExpr}`.as("binding_key"),
4953
- step_time: T`MIN(${e.timeExpr})`.as("step_time")
4952
+ binding_key: C`${e.bindingKeyExpr}`.as("binding_key"),
4953
+ step_time: C`MIN(${e.timeExpr})`.as("step_time")
4954
4954
  }).from(r.from);
4955
4955
  return a = this.addCrossJoinsToQuery(a, e, t, i), i.length > 0 && (a = a.where(R(i))), a = a.groupBy(e.bindingKeyExpr), t.db.$with(n).as(a);
4956
4956
  }
4957
4957
  buildSubsequentStepCTE(e, t, n) {
4958
4958
  let r = `step_${e.index}`, i = `step_${e.index - 1}`, a = e.cube.sql(t), o = [];
4959
4959
  a.where && o.push(a.where), o.push(...e.filterConditions);
4960
- let s = T`${T.identifier(i)}.step_time`, c = T`${e.timeExpr} > ${s}`;
4960
+ let s = C`${C.identifier(i)}.step_time`, c = C`${e.timeExpr} > ${s}`;
4961
4961
  if (e.timeToConvert) {
4962
4962
  let t = this.databaseAdapter.buildDateAddInterval(s, e.timeToConvert);
4963
- c = T`${c} AND ${e.timeExpr} <= ${t}`;
4963
+ c = C`${c} AND ${e.timeExpr} <= ${t}`;
4964
4964
  }
4965
4965
  o.push(c);
4966
4966
  let l = t.db.select({
4967
- binding_key: T`${e.bindingKeyExpr}`.as("binding_key"),
4968
- step_time: T`MIN(${e.timeExpr})`.as("step_time")
4969
- }).from(a.from).innerJoin(n, T`${e.bindingKeyExpr} = ${T.identifier(i)}.binding_key`);
4967
+ binding_key: C`${e.bindingKeyExpr}`.as("binding_key"),
4968
+ step_time: C`MIN(${e.timeExpr})`.as("step_time")
4969
+ }).from(a.from).innerJoin(n, C`${e.bindingKeyExpr} = ${C.identifier(i)}.binding_key`);
4970
4970
  return l = this.addCrossJoinsToQuery(l, e, t, o), o.length > 0 && (l = l.where(R(o))), l = l.groupBy(e.bindingKeyExpr), t.db.$with(r).as(l);
4971
4971
  }
4972
4972
  addCrossJoinsToQuery(e, t, n, r) {
4973
4973
  if (t.joinedCubes.length === 0) return e;
4974
4974
  for (let i of t.joinedCubes) for (let t of i.joinPath) {
4975
4975
  let a = t.joinDef, o = [];
4976
- for (let e of a.on) e.as ? o.push(e.as(e.source, e.target)) : o.push(x(e.source, e.target));
4976
+ for (let e of a.on) e.as ? o.push(e.as(e.source, e.target)) : o.push(b(e.source, e.target));
4977
4977
  let s = R(o), c = i.cube.sql(n);
4978
4978
  e = e.leftJoin(c.from, s), c.where && r.push(c.where);
4979
4979
  }
@@ -4981,33 +4981,33 @@ var ar = class {
4981
4981
  }
4982
4982
  buildFunnelResultsCTE(e, t, n, r) {
4983
4983
  let i = {
4984
- binding_key: T`s0.binding_key`,
4985
- step_0_time: T`s0.step_time`
4984
+ binding_key: C`s0.binding_key`,
4985
+ step_0_time: C`s0.step_time`
4986
4986
  };
4987
- for (let e = 1; e < t.length; e++) i[`step_${e}_time`] = T`s${T.raw(String(e))}.step_time`;
4988
- let a = T`${T.identifier("step_0")} s0`;
4989
- for (let e = 1; e < t.length; e++) a = T`${a}
4990
- LEFT JOIN ${T.identifier(`step_${e}`)} s${T.raw(String(e))} ON s0.binding_key = s${T.raw(String(e))}.binding_key`;
4991
- let o = Object.entries(i).map(([e, t]) => T`${t} AS ${T.identifier(e)}`), s = T`SELECT ${T.join(o, T`, `)} FROM ${a}`;
4987
+ for (let e = 1; e < t.length; e++) i[`step_${e}_time`] = C`s${C.raw(String(e))}.step_time`;
4988
+ let a = C`${C.identifier("step_0")} s0`;
4989
+ for (let e = 1; e < t.length; e++) a = C`${a}
4990
+ LEFT JOIN ${C.identifier(`step_${e}`)} s${C.raw(String(e))} ON s0.binding_key = s${C.raw(String(e))}.binding_key`;
4991
+ let o = Object.entries(i).map(([e, t]) => C`${t} AS ${C.identifier(e)}`), s = C`SELECT ${C.join(o, C`, `)} FROM ${a}`;
4992
4992
  return r.db.$with("funnel_joined").as(s);
4993
4993
  }
4994
4994
  buildAggregationCTE(e, t, n, r, i) {
4995
4995
  let a = {};
4996
- a.step_0_count = T`COUNT(*)`.as("step_0_count");
4997
- for (let e = 1; e < n.length; e++) a[`step_${e}_count`] = T`COUNT(${T.identifier(`step_${e}_time`)})`.as(`step_${e}_count`);
4996
+ a.step_0_count = C`COUNT(*)`.as("step_0_count");
4997
+ for (let e = 1; e < n.length; e++) a[`step_${e}_count`] = C`COUNT(${C.identifier(`step_${e}_time`)})`.as(`step_${e}_count`);
4998
4998
  if (r.includeTimeMetrics) for (let e = 1; e < n.length; e++) {
4999
- let t = T.identifier(`step_${e}_time`), n = T.identifier(`step_${e - 1}_time`), r = this.databaseAdapter.buildTimeDifferenceSeconds(T`${t}`, T`${n}`), i = T`${t} IS NOT NULL`;
4999
+ let t = C.identifier(`step_${e}_time`), n = C.identifier(`step_${e - 1}_time`), r = this.databaseAdapter.buildTimeDifferenceSeconds(C`${t}`, C`${n}`), i = C`${t} IS NOT NULL`;
5000
5000
  if (a[`step_${e}_avg_seconds`] = this.databaseAdapter.buildConditionalAggregation("avg", r, i).as(`step_${e}_avg_seconds`), a[`step_${e}_min_seconds`] = this.databaseAdapter.buildConditionalAggregation("min", r, i).as(`step_${e}_min_seconds`), a[`step_${e}_max_seconds`] = this.databaseAdapter.buildConditionalAggregation("max", r, i).as(`step_${e}_max_seconds`), this.databaseAdapter.getCapabilities().supportsPercentileSubqueries) {
5001
5001
  let n = this.databaseAdapter.buildPercentile(r, 50);
5002
- n && (a[`step_${e}_median_seconds`] = T`(SELECT ${n} FROM ${T.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_median_seconds`));
5002
+ n && (a[`step_${e}_median_seconds`] = C`(SELECT ${n} FROM ${C.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_median_seconds`));
5003
5003
  let i = this.databaseAdapter.buildPercentile(r, 90);
5004
- i && (a[`step_${e}_p90_seconds`] = T`(SELECT ${i} FROM ${T.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_p90_seconds`));
5004
+ i && (a[`step_${e}_p90_seconds`] = C`(SELECT ${i} FROM ${C.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_p90_seconds`));
5005
5005
  }
5006
5006
  }
5007
5007
  let o = i.db.select(a).from(e);
5008
5008
  return i.db.$with("funnel_metrics").as(o);
5009
5009
  }
5010
- }, cr = class {
5010
+ }, lr = class {
5011
5011
  filterBuilder;
5012
5012
  dateTimeBuilder;
5013
5013
  databaseAdapter;
@@ -5015,32 +5015,32 @@ var ar = class {
5015
5015
  this.databaseAdapter = e, this.dateTimeBuilder = new I(e), this.filterBuilder = new B(e, this.dateTimeBuilder);
5016
5016
  }
5017
5017
  hasFlow(e) {
5018
- return a(e);
5018
+ return y(e);
5019
5019
  }
5020
- validateConfig(e, n) {
5021
- let r = [], i = [], a = this.databaseAdapter.getEngineType(), o = this.databaseAdapter.getCapabilities().supportsLateralSubqueriesInCTE;
5022
- return a === "sqlite" ? (r.push(t("server.validation.flow.sqliteNotSupported")), {
5020
+ validateConfig(e, t) {
5021
+ let n = [], r = [], i = this.databaseAdapter.getEngineType(), a = this.databaseAdapter.getCapabilities().supportsLateralSubqueriesInCTE;
5022
+ return i === "sqlite" ? (n.push(S("server.validation.flow.sqliteNotSupported")), {
5023
5023
  isValid: !1,
5024
- errors: r,
5025
- warnings: i
5026
- }) : (this.validateBindingKey(e, n, r), typeof e.timeDimension == "string" && this.validateMemberDimension(e.timeDimension, n, r, {
5027
- invalidFormat: () => t("server.validation.flow.invalidTimeDimFormat", { timeDimension: e.timeDimension }),
5028
- cubeNotFound: (e) => t("server.validation.flow.timeDimCubeNotFound", { cubeName: e }),
5029
- dimNotFound: (e, n) => t("server.validation.flow.timeDimNotFound", {
5024
+ errors: n,
5025
+ warnings: r
5026
+ }) : (this.validateBindingKey(e, t, n), typeof e.timeDimension == "string" && this.validateMemberDimension(e.timeDimension, t, n, {
5027
+ invalidFormat: () => S("server.validation.flow.invalidTimeDimFormat", { timeDimension: e.timeDimension }),
5028
+ cubeNotFound: (e) => S("server.validation.flow.timeDimCubeNotFound", { cubeName: e }),
5029
+ dimNotFound: (e, t) => S("server.validation.flow.timeDimNotFound", {
5030
5030
  dimName: e,
5031
- cubeName: n
5031
+ cubeName: t
5032
5032
  })
5033
- }), e.eventDimension ? this.validateMemberDimension(e.eventDimension, n, r, {
5034
- invalidFormat: () => t("server.validation.flow.invalidEventDimFormat", { eventDimension: e.eventDimension }),
5035
- cubeNotFound: (e) => t("server.validation.flow.eventDimCubeNotFound", { cubeName: e }),
5036
- dimNotFound: (e, n) => t("server.validation.flow.eventDimNotFound", {
5033
+ }), e.eventDimension ? this.validateMemberDimension(e.eventDimension, t, n, {
5034
+ invalidFormat: () => S("server.validation.flow.invalidEventDimFormat", { eventDimension: e.eventDimension }),
5035
+ cubeNotFound: (e) => S("server.validation.flow.eventDimCubeNotFound", { cubeName: e }),
5036
+ dimNotFound: (e, t) => S("server.validation.flow.eventDimNotFound", {
5037
5037
  dimName: e,
5038
- cubeName: n
5038
+ cubeName: t
5039
5039
  })
5040
- }) : r.push(t("server.validation.flow.eventDimRequired")), this.validateStartingStep(e, r, i), this.validateDepthBounds(e, r, i), this.validateJoinStrategy(e, o, r), {
5041
- isValid: r.length === 0,
5042
- errors: r,
5043
- warnings: i
5040
+ }) : n.push(S("server.validation.flow.eventDimRequired")), this.validateStartingStep(e, n, r), this.validateDepthBounds(e, n, r), this.validateJoinStrategy(e, a, n), {
5041
+ isValid: n.length === 0,
5042
+ errors: n,
5043
+ warnings: r
5044
5044
  });
5045
5045
  }
5046
5046
  validateMemberDimension(e, t, n, r) {
@@ -5052,67 +5052,67 @@ var ar = class {
5052
5052
  let o = t.get(i);
5053
5053
  o ? o.dimensions?.[a] || n.push(r.dimNotFound(a, i)) : n.push(r.cubeNotFound(i));
5054
5054
  }
5055
- validateBindingKey(e, n, r) {
5055
+ validateBindingKey(e, t, n) {
5056
5056
  if (typeof e.bindingKey == "string") {
5057
- this.validateMemberDimension(e.bindingKey, n, r, {
5058
- invalidFormat: () => t("server.validation.flow.invalidBindingKeyFormat", { bindingKey: e.bindingKey }),
5059
- cubeNotFound: (e) => t("server.validation.flow.bindingKeyCubeNotFound", { cubeName: e }),
5060
- dimNotFound: (e, n) => t("server.validation.flow.bindingKeyDimNotFound", {
5057
+ this.validateMemberDimension(e.bindingKey, t, n, {
5058
+ invalidFormat: () => S("server.validation.flow.invalidBindingKeyFormat", { bindingKey: e.bindingKey }),
5059
+ cubeNotFound: (e) => S("server.validation.flow.bindingKeyCubeNotFound", { cubeName: e }),
5060
+ dimNotFound: (e, t) => S("server.validation.flow.bindingKeyDimNotFound", {
5061
5061
  dimName: e,
5062
- cubeName: n
5062
+ cubeName: t
5063
5063
  })
5064
5064
  });
5065
5065
  return;
5066
5066
  }
5067
- if (Array.isArray(e.bindingKey)) for (let i of e.bindingKey) {
5068
- let e = n.get(i.cube);
5067
+ if (Array.isArray(e.bindingKey)) for (let r of e.bindingKey) {
5068
+ let e = t.get(r.cube);
5069
5069
  if (!e) {
5070
- r.push(t("server.validation.flow.bindingKeyMappingCubeNotFound", { cubeName: i.cube }));
5070
+ n.push(S("server.validation.flow.bindingKeyMappingCubeNotFound", { cubeName: r.cube }));
5071
5071
  continue;
5072
5072
  }
5073
- let [, a] = i.dimension.split(".");
5074
- e.dimensions?.[a] || r.push(t("server.validation.flow.bindingKeyDimNotFound", {
5075
- dimName: a,
5076
- cubeName: i.cube
5073
+ let [, i] = r.dimension.split(".");
5074
+ e.dimensions?.[i] || n.push(S("server.validation.flow.bindingKeyDimNotFound", {
5075
+ dimName: i,
5076
+ cubeName: r.cube
5077
5077
  }));
5078
5078
  }
5079
5079
  }
5080
- validateStartingStep(e, n, r) {
5080
+ validateStartingStep(e, t, n) {
5081
5081
  if (!e.startingStep) {
5082
- n.push(t("server.validation.flow.startingStepRequired"));
5082
+ t.push(S("server.validation.flow.startingStepRequired"));
5083
5083
  return;
5084
5084
  }
5085
- e.startingStep.filter || n.push(t("server.validation.flow.startingStepFilterRequired")), e.startingStep.name || r.push(t("server.validation.flow.startingStepNameMissing"));
5085
+ e.startingStep.filter || t.push(S("server.validation.flow.startingStepFilterRequired")), e.startingStep.name || n.push(S("server.validation.flow.startingStepNameMissing"));
5086
5086
  }
5087
- validateDepthBounds(e, n, r) {
5088
- (e.stepsBefore < 0 || e.stepsBefore > 5) && n.push(t("server.validation.flow.stepsBeforeRange", { value: e.stepsBefore })), (e.stepsAfter < 0 || e.stepsAfter > 5) && n.push(t("server.validation.flow.stepsAfterRange", { value: e.stepsAfter })), (e.stepsBefore >= 4 || e.stepsAfter >= 4) && r.push(t("server.validation.flow.highStepDepthWarning"));
5087
+ validateDepthBounds(e, t, n) {
5088
+ (e.stepsBefore < 0 || e.stepsBefore > 5) && t.push(S("server.validation.flow.stepsBeforeRange", { value: e.stepsBefore })), (e.stepsAfter < 0 || e.stepsAfter > 5) && t.push(S("server.validation.flow.stepsAfterRange", { value: e.stepsAfter })), (e.stepsBefore >= 4 || e.stepsAfter >= 4) && n.push(S("server.validation.flow.highStepDepthWarning"));
5089
5089
  }
5090
- validateJoinStrategy(e, n, r) {
5090
+ validateJoinStrategy(e, t, n) {
5091
5091
  e.joinStrategy && ![
5092
5092
  "auto",
5093
5093
  "lateral",
5094
5094
  "window"
5095
- ].includes(e.joinStrategy) ? r.push(t("server.validation.flow.invalidJoinStrategy", { joinStrategy: e.joinStrategy })) : e.joinStrategy === "lateral" && !n && r.push(t("server.validation.flow.lateralNotSupported"));
5095
+ ].includes(e.joinStrategy) ? n.push(S("server.validation.flow.invalidJoinStrategy", { joinStrategy: e.joinStrategy })) : e.joinStrategy === "lateral" && !t && n.push(S("server.validation.flow.lateralNotSupported"));
5096
5096
  }
5097
- buildFlowQuery(e, n, r) {
5098
- if (this.databaseAdapter.getEngineType() === "sqlite") throw Error(t("server.validation.flow.sqliteNotSupported"));
5099
- let i = this.databaseAdapter.getCapabilities().supportsLateralSubqueriesInCTE, a = e.joinStrategy ?? "auto", o = a === "lateral" || a === "auto" && i;
5100
- if (a === "lateral" && !i) throw Error(t("server.validation.flow.lateralNotSupportedExec"));
5101
- let s = {
5097
+ buildFlowQuery(e, t, n) {
5098
+ if (this.databaseAdapter.getEngineType() === "sqlite") throw Error(S("server.validation.flow.sqliteNotSupported"));
5099
+ let r = this.databaseAdapter.getCapabilities().supportsLateralSubqueriesInCTE, i = e.joinStrategy ?? "auto", a = i === "lateral" || i === "auto" && r;
5100
+ if (i === "lateral" && !r) throw Error(S("server.validation.flow.lateralNotSupportedExec"));
5101
+ let o = {
5102
5102
  ...e,
5103
5103
  stepsBefore: e.outputMode === "sunburst" ? 0 : e.stepsBefore
5104
- }, c = this.resolveFlowConfig(s, n, r), l = [], u = this.buildStartingEntitiesCTE(s, c, r);
5105
- l.push(u);
5106
- let d = o ? this.buildDirectionalCTEsLateral("before", s, c, r) : this.buildDirectionalCTEsWindow("before", s, c, r);
5107
- l.push(...d);
5108
- let f = o ? this.buildDirectionalCTEsLateral("after", s, c, r) : this.buildDirectionalCTEsWindow("after", s, c, r);
5109
- l.push(...f);
5110
- let p = this.buildNodesAggregationCTE(s, r);
5111
- l.push(p);
5112
- let m = this.buildLinksAggregationCTE(s, r);
5113
- l.push(m);
5114
- let h = this.buildFinalResultCTE(r);
5115
- return l.push(h), r.db.with(...l).select().from(h);
5104
+ }, s = this.resolveFlowConfig(o, t, n), c = [], l = this.buildStartingEntitiesCTE(o, s, n);
5105
+ c.push(l);
5106
+ let u = a ? this.buildDirectionalCTEsLateral("before", o, s, n) : this.buildDirectionalCTEsWindow("before", o, s, n);
5107
+ c.push(...u);
5108
+ let d = a ? this.buildDirectionalCTEsLateral("after", o, s, n) : this.buildDirectionalCTEsWindow("after", o, s, n);
5109
+ c.push(...d);
5110
+ let f = this.buildNodesAggregationCTE(o, n);
5111
+ c.push(f);
5112
+ let p = this.buildLinksAggregationCTE(o, n);
5113
+ c.push(p);
5114
+ let m = this.buildFinalResultCTE(n);
5115
+ return c.push(m), n.db.with(...c).select().from(m);
5116
5116
  }
5117
5117
  transformResult(e) {
5118
5118
  if (!e || e.length === 0) return {
@@ -5149,14 +5149,14 @@ var ar = class {
5149
5149
  startingStepFilters: this.buildStartingStepFilters(e, r, n)
5150
5150
  };
5151
5151
  }
5152
- resolveCube(e, n) {
5153
- let r;
5154
- if (typeof e.bindingKey == "string") [r] = e.bindingKey.split(".");
5155
- else if (Array.isArray(e.bindingKey) && e.bindingKey.length > 0) r = e.bindingKey[0].cube;
5156
- else throw Error(t("server.errors.flow.cannotResolveCube"));
5157
- let i = n.get(r);
5158
- if (!i) throw Error(t("server.errors.flow.cubeNotFound", { cubeName: r }));
5159
- return i;
5152
+ resolveCube(e, t) {
5153
+ let n;
5154
+ if (typeof e.bindingKey == "string") [n] = e.bindingKey.split(".");
5155
+ else if (Array.isArray(e.bindingKey) && e.bindingKey.length > 0) n = e.bindingKey[0].cube;
5156
+ else throw Error(S("server.errors.flow.cannotResolveCube"));
5157
+ let r = t.get(n);
5158
+ if (!r) throw Error(S("server.errors.flow.cubeNotFound", { cubeName: n }));
5159
+ return r;
5160
5160
  }
5161
5161
  resolveBindingKey(e, t, n) {
5162
5162
  return tn(e.bindingKey, t, n, $t("server.errors.flow"));
@@ -5164,10 +5164,10 @@ var ar = class {
5164
5164
  resolveTimeDimension(e, t, n) {
5165
5165
  return nn(e.timeDimension, t, n, "server.errors.flow");
5166
5166
  }
5167
- resolveEventDimension(e, n, r) {
5168
- let [, i] = e.eventDimension.split("."), a = n.dimensions?.[i];
5169
- if (!a) throw Error(t("server.errors.flow.eventDimNotFound", { eventDimension: e.eventDimension }));
5170
- return f(a.sql, r);
5167
+ resolveEventDimension(e, t, n) {
5168
+ let [, r] = e.eventDimension.split("."), i = t.dimensions?.[r];
5169
+ if (!i) throw Error(S("server.errors.flow.eventDimNotFound", { eventDimension: e.eventDimension }));
5170
+ return l(i.sql, n);
5171
5171
  }
5172
5172
  buildStartingStepFilters(e, t, n) {
5173
5173
  if (!e.startingStep.filter) return [];
@@ -5188,10 +5188,10 @@ var ar = class {
5188
5188
  let e = this.buildSubConditions(r.filters, t, n);
5189
5189
  return this.combineConditions(e, r.isAnd);
5190
5190
  }
5191
- let i = e, [, a] = i.member.split("."), o = t.dimensions?.[a];
5192
- if (!o) return null;
5193
- let s = l(o, n);
5194
- return this.filterBuilder.buildFilterCondition(s, i.operator, i.values || [], o, i.dateRange);
5191
+ let i = e, [, a] = i.member.split("."), s = t.dimensions?.[a];
5192
+ if (!s) return null;
5193
+ let c = o(s, n);
5194
+ return this.filterBuilder.buildFilterCondition(c, i.operator, i.values || [], s, i.dateRange);
5195
5195
  }
5196
5196
  buildSubConditions(e, t, n) {
5197
5197
  let r = [];
@@ -5202,63 +5202,63 @@ var ar = class {
5202
5202
  return r;
5203
5203
  }
5204
5204
  combineConditions(e, t) {
5205
- return e.length === 0 ? null : e.length === 1 ? e[0] : t ? n(...e) : T`(${T.join(e, T` OR `)})`;
5205
+ return e.length === 0 ? null : e.length === 1 ? e[0] : t ? w(...e) : C`(${C.join(e, C` OR `)})`;
5206
5206
  }
5207
5207
  buildStartingEntitiesCTE(e, t, n) {
5208
5208
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o, startingStepFilters: s } = t, c = [];
5209
5209
  r.where && c.push(r.where), c.push(...s);
5210
5210
  let l = n.db.select({
5211
- binding_key: T`${i}`.as("binding_key"),
5212
- start_time: T`MIN(${a})`.as("start_time"),
5213
- event_type: T`${o}`.as("event_type"),
5214
- event_path: T`${o}`.as("event_path")
5211
+ binding_key: C`${i}`.as("binding_key"),
5212
+ start_time: C`MIN(${a})`.as("start_time"),
5213
+ event_type: C`${o}`.as("event_type"),
5214
+ event_path: C`${o}`.as("event_path")
5215
5215
  }).from(r.from);
5216
5216
  return c.length > 0 && (l = l.where(R(c))), l = l.groupBy(i, o), e.entityLimit && (l = l.limit(e.entityLimit)), n.db.$with("starting_entities").as(l);
5217
5217
  }
5218
5218
  buildDirectionalCTEsLateral(e, t, n, r) {
5219
- let { cubeBase: i, bindingKeyExpr: a, timeExpr: o, eventExpr: s } = n, c = [], l = t.outputMode === "sunburst", u = e === "before", d = u ? t.stepsBefore : t.stepsAfter, f = u ? T`<` : T`>`, p = u ? T`DESC` : T`ASC`;
5219
+ let { cubeBase: i, bindingKeyExpr: a, timeExpr: o, eventExpr: s } = n, c = [], l = t.outputMode === "sunburst", u = e === "before", d = u ? t.stepsBefore : t.stepsAfter, f = u ? C`<` : C`>`, p = u ? C`DESC` : C`ASC`;
5220
5220
  for (let t = 1; t <= d; t++) {
5221
5221
  let n = t === 1 ? "starting_entities" : `${e}_step_${t - 1}`, d = t === 1 ? "start_time" : "step_time", m = `${e}_step_${t}`, h = [];
5222
- i.where && h.push(i.where), h.push(T`${a} = ${T.identifier(n)}.binding_key`, T`${o} ${f} ${T.identifier(n)}.${T.identifier(d)}`);
5223
- let g = R(h), _ = l ? u ? T`${s} || ${"→"} || ${T.identifier(n)}.event_path` : T`${T.identifier(n)}.event_path || ${"→"} || ${s}` : T`${s}`, v = r.db.select({
5224
- binding_key: T`${a}`.as("binding_key"),
5225
- step_time: T`${o}`.as("step_time"),
5226
- event_type: T`${s}`.as("event_type"),
5222
+ i.where && h.push(i.where), h.push(C`${a} = ${C.identifier(n)}.binding_key`, C`${o} ${f} ${C.identifier(n)}.${C.identifier(d)}`);
5223
+ let g = R(h), _ = l ? u ? C`${s} || ${"→"} || ${C.identifier(n)}.event_path` : C`${C.identifier(n)}.event_path || ${"→"} || ${s}` : C`${s}`, v = r.db.select({
5224
+ binding_key: C`${a}`.as("binding_key"),
5225
+ step_time: C`${o}`.as("step_time"),
5226
+ event_type: C`${s}`.as("event_type"),
5227
5227
  event_path: _.as("event_path")
5228
- }).from(i.from).where(g).orderBy(T`${o} ${p}`).limit(1), y = r.db.$with(m).as(r.db.select({
5229
- binding_key: T`e.binding_key`.as("binding_key"),
5230
- step_time: T`e.step_time`.as("step_time"),
5231
- event_type: T`e.event_type`.as("event_type"),
5232
- event_path: T`e.event_path`.as("event_path")
5233
- }).from(T`${T.identifier(n)}`).crossJoinLateral(v.as("e")));
5228
+ }).from(i.from).where(g).orderBy(C`${o} ${p}`).limit(1), y = r.db.$with(m).as(r.db.select({
5229
+ binding_key: C`e.binding_key`.as("binding_key"),
5230
+ step_time: C`e.step_time`.as("step_time"),
5231
+ event_type: C`e.event_type`.as("event_type"),
5232
+ event_path: C`e.event_path`.as("event_path")
5233
+ }).from(C`${C.identifier(n)}`).crossJoinLateral(v.as("e")));
5234
5234
  c.push(y);
5235
5235
  }
5236
5236
  return c;
5237
5237
  }
5238
5238
  buildDirectionalCTEsWindow(e, t, n, r) {
5239
- let { cubeBase: i, bindingKeyExpr: a, timeExpr: o, eventExpr: s } = n, c = [], l = t.outputMode === "sunburst", u = e === "before", d = u ? t.stepsBefore : t.stepsAfter, f = u ? T`<` : T`>`, p = u ? T`DESC` : T`ASC`;
5239
+ let { cubeBase: i, bindingKeyExpr: a, timeExpr: o, eventExpr: s } = n, c = [], l = t.outputMode === "sunburst", u = e === "before", d = u ? t.stepsBefore : t.stepsAfter, f = u ? C`<` : C`>`, p = u ? C`DESC` : C`ASC`;
5240
5240
  for (let t = 1; t <= d; t++) {
5241
5241
  let n = t === 1 ? "starting_entities" : `${e}_step_${t - 1}`, d = t === 1 ? "start_time" : "step_time", m = `${e}_step_${t}`, h = [];
5242
- i.where && h.push(i.where), h.push(T`${o} ${f} ${T.identifier(n)}.${T.identifier(d)}`);
5243
- let g = R(h), _ = l ? u ? T`${s} || ${"→"} || ${T.identifier(n)}.event_path` : T`${T.identifier(n)}.event_path || ${"→"} || ${s}` : T`${s}`, v = r.db.select({
5244
- binding_key: T`${a}`.as("binding_key"),
5245
- step_time: T`${o}`.as("step_time"),
5246
- event_type: T`${s}`.as("event_type"),
5242
+ i.where && h.push(i.where), h.push(C`${o} ${f} ${C.identifier(n)}.${C.identifier(d)}`);
5243
+ let g = R(h), _ = l ? u ? C`${s} || ${"→"} || ${C.identifier(n)}.event_path` : C`${C.identifier(n)}.event_path || ${"→"} || ${s}` : C`${s}`, v = r.db.select({
5244
+ binding_key: C`${a}`.as("binding_key"),
5245
+ step_time: C`${o}`.as("step_time"),
5246
+ event_type: C`${s}`.as("event_type"),
5247
5247
  event_path: _.as("event_path"),
5248
- rn: T`ROW_NUMBER() OVER (PARTITION BY ${a} ORDER BY ${o} ${p})`.as("rn")
5249
- }).from(i.from).innerJoin(T`${T.identifier(n)}`, T`${a} = ${T.identifier(n)}.binding_key`).where(g), y = r.db.select({
5250
- binding_key: T`binding_key`.as("binding_key"),
5251
- step_time: T`step_time`.as("step_time"),
5252
- event_type: T`event_type`.as("event_type"),
5253
- event_path: T`event_path`.as("event_path")
5254
- }).from(v.as("ranked")).where(T`rn = 1`);
5248
+ rn: C`ROW_NUMBER() OVER (PARTITION BY ${a} ORDER BY ${o} ${p})`.as("rn")
5249
+ }).from(i.from).innerJoin(C`${C.identifier(n)}`, C`${a} = ${C.identifier(n)}.binding_key`).where(g), y = r.db.select({
5250
+ binding_key: C`binding_key`.as("binding_key"),
5251
+ step_time: C`step_time`.as("step_time"),
5252
+ event_type: C`event_type`.as("event_type"),
5253
+ event_path: C`event_path`.as("event_path")
5254
+ }).from(v.as("ranked")).where(C`rn = 1`);
5255
5255
  c.push(r.db.$with(m).as(y));
5256
5256
  }
5257
5257
  return c;
5258
5258
  }
5259
5259
  buildNodeArm(e, t, n, r) {
5260
- let i = T.raw(`'${e}_'`), a = T.raw(String(t)), o = T.identifier(n);
5261
- return r ? T`
5260
+ let i = C.raw(`'${e}_'`), a = C.raw(String(t)), o = C.identifier(n);
5261
+ return r ? C`
5262
5262
  SELECT
5263
5263
  ${i} || event_path AS node_id,
5264
5264
  event_type AS name,
@@ -5266,7 +5266,7 @@ var ar = class {
5266
5266
  COUNT(*) AS value
5267
5267
  FROM ${o}
5268
5268
  GROUP BY event_path, event_type
5269
- ` : T`
5269
+ ` : C`
5270
5270
  SELECT
5271
5271
  ${i} || event_type AS node_id,
5272
5272
  event_type AS name,
@@ -5277,8 +5277,8 @@ var ar = class {
5277
5277
  `;
5278
5278
  }
5279
5279
  buildAdjacentLinkArm(e, t, n, r, i) {
5280
- let a = T.raw(`'${e}_'`), o = T.raw(`'${t}_'`), s = T.identifier(n), c = T.identifier(r);
5281
- return i ? T`
5280
+ let a = C.raw(`'${e}_'`), o = C.raw(`'${t}_'`), s = C.identifier(n), c = C.identifier(r);
5281
+ return i ? C`
5282
5282
  SELECT
5283
5283
  ${a} || f.event_path AS source_id,
5284
5284
  ${o} || t.event_path AS target_id,
@@ -5286,7 +5286,7 @@ var ar = class {
5286
5286
  FROM ${s} f
5287
5287
  INNER JOIN ${c} t ON f.binding_key = t.binding_key
5288
5288
  GROUP BY f.event_path, t.event_path
5289
- ` : T`
5289
+ ` : C`
5290
5290
  SELECT
5291
5291
  ${a} || f.event_type AS source_id,
5292
5292
  ${o} || t.event_type AS target_id,
@@ -5299,9 +5299,9 @@ var ar = class {
5299
5299
  buildNodesAggregationCTE(e, t) {
5300
5300
  let n = [], r = e.outputMode === "sunburst";
5301
5301
  for (let t = e.stepsBefore; t >= 1; t--) n.push(this.buildNodeArm(`before_${t}`, -t, `before_step_${t}`, r));
5302
- n.push(T`
5302
+ n.push(C`
5303
5303
  SELECT
5304
- ${T.raw("'start_'")} || event_type AS node_id,
5304
+ ${C.raw("'start_'")} || event_type AS node_id,
5305
5305
  event_type AS name,
5306
5306
  0 AS layer,
5307
5307
  COUNT(*) AS value
@@ -5309,45 +5309,45 @@ var ar = class {
5309
5309
  GROUP BY event_type
5310
5310
  `);
5311
5311
  for (let t = 1; t <= e.stepsAfter; t++) n.push(this.buildNodeArm(`after_${t}`, t, `after_step_${t}`, r));
5312
- let i = T.join(n, T` UNION ALL `), a = t.db.select({
5313
- node_id: T`node_id`.as("node_id"),
5314
- name: T`name`.as("name"),
5315
- layer: T`layer`.as("layer"),
5316
- value: T`value`.as("value")
5317
- }).from(T`(${i}) AS nodes_union`);
5312
+ let i = C.join(n, C` UNION ALL `), a = t.db.select({
5313
+ node_id: C`node_id`.as("node_id"),
5314
+ name: C`name`.as("name"),
5315
+ layer: C`layer`.as("layer"),
5316
+ value: C`value`.as("value")
5317
+ }).from(C`(${i}) AS nodes_union`);
5318
5318
  return t.db.$with("nodes_agg").as(a);
5319
5319
  }
5320
5320
  buildLinksAggregationCTE(e, t) {
5321
5321
  let n = [], r = e.outputMode === "sunburst";
5322
5322
  for (let t = e.stepsBefore; t >= 2; t--) n.push(this.buildAdjacentLinkArm(`before_${t}`, `before_${t - 1}`, `before_step_${t}`, `before_step_${t - 1}`, r));
5323
- e.stepsBefore >= 1 && (r ? n.push(T`
5323
+ e.stepsBefore >= 1 && (r ? n.push(C`
5324
5324
  SELECT
5325
- ${T.raw("'before_1_'")} || b.event_path AS source_id,
5326
- ${T.raw("'start_'")} || s.event_type AS target_id,
5325
+ ${C.raw("'before_1_'")} || b.event_path AS source_id,
5326
+ ${C.raw("'start_'")} || s.event_type AS target_id,
5327
5327
  COUNT(*) AS value
5328
5328
  FROM before_step_1 b
5329
5329
  INNER JOIN starting_entities s ON b.binding_key = s.binding_key
5330
5330
  GROUP BY b.event_path, s.event_type
5331
- `) : n.push(T`
5331
+ `) : n.push(C`
5332
5332
  SELECT
5333
- ${T.raw("'before_1_'")} || b.event_type AS source_id,
5334
- ${T.raw("'start_'")} || s.event_type AS target_id,
5333
+ ${C.raw("'before_1_'")} || b.event_type AS source_id,
5334
+ ${C.raw("'start_'")} || s.event_type AS target_id,
5335
5335
  COUNT(*) AS value
5336
5336
  FROM before_step_1 b
5337
5337
  INNER JOIN starting_entities s ON b.binding_key = s.binding_key
5338
5338
  GROUP BY b.event_type, s.event_type
5339
- `)), e.stepsAfter >= 1 && (r ? n.push(T`
5339
+ `)), e.stepsAfter >= 1 && (r ? n.push(C`
5340
5340
  SELECT
5341
- ${T.raw("'start_'")} || s.event_type AS source_id,
5342
- ${T.raw("'after_1_'")} || a.event_path AS target_id,
5341
+ ${C.raw("'start_'")} || s.event_type AS source_id,
5342
+ ${C.raw("'after_1_'")} || a.event_path AS target_id,
5343
5343
  COUNT(*) AS value
5344
5344
  FROM starting_entities s
5345
5345
  INNER JOIN after_step_1 a ON s.binding_key = a.binding_key
5346
5346
  GROUP BY s.event_type, a.event_path
5347
- `) : n.push(T`
5347
+ `) : n.push(C`
5348
5348
  SELECT
5349
- ${T.raw("'start_'")} || s.event_type AS source_id,
5350
- ${T.raw("'after_1_'")} || a.event_type AS target_id,
5349
+ ${C.raw("'start_'")} || s.event_type AS source_id,
5350
+ ${C.raw("'after_1_'")} || a.event_type AS target_id,
5351
5351
  COUNT(*) AS value
5352
5352
  FROM starting_entities s
5353
5353
  INNER JOIN after_step_1 a ON s.binding_key = a.binding_key
@@ -5356,21 +5356,21 @@ var ar = class {
5356
5356
  for (let t = 1; t < e.stepsAfter; t++) n.push(this.buildAdjacentLinkArm(`after_${t}`, `after_${t + 1}`, `after_step_${t}`, `after_step_${t + 1}`, r));
5357
5357
  if (n.length === 0) {
5358
5358
  let e = t.db.select({
5359
- source_id: T`NULL`.as("source_id"),
5360
- target_id: T`NULL`.as("target_id"),
5361
- value: T`0`.as("value")
5362
- }).from(T`(SELECT 1) AS empty`).where(T`1 = 0`);
5359
+ source_id: C`NULL`.as("source_id"),
5360
+ target_id: C`NULL`.as("target_id"),
5361
+ value: C`0`.as("value")
5362
+ }).from(C`(SELECT 1) AS empty`).where(C`1 = 0`);
5363
5363
  return t.db.$with("links_agg").as(e);
5364
5364
  }
5365
- let i = T.join(n, T` UNION ALL `), a = t.db.select({
5366
- source_id: T`source_id`.as("source_id"),
5367
- target_id: T`target_id`.as("target_id"),
5368
- value: T`value`.as("value")
5369
- }).from(T`(${i}) AS links_union`);
5365
+ let i = C.join(n, C` UNION ALL `), a = t.db.select({
5366
+ source_id: C`source_id`.as("source_id"),
5367
+ target_id: C`target_id`.as("target_id"),
5368
+ value: C`value`.as("value")
5369
+ }).from(C`(${i}) AS links_union`);
5370
5370
  return t.db.$with("links_agg").as(a);
5371
5371
  }
5372
5372
  buildFinalResultCTE(e) {
5373
- let t = T`
5373
+ let t = C`
5374
5374
  SELECT
5375
5375
  'node' AS record_type,
5376
5376
  node_id AS id,
@@ -5392,51 +5392,51 @@ var ar = class {
5392
5392
  FROM links_agg
5393
5393
  WHERE source_id IS NOT NULL
5394
5394
  `, n = e.db.select({
5395
- record_type: T`record_type`.as("record_type"),
5396
- id: T`id`.as("id"),
5397
- name: T`name`.as("name"),
5398
- layer: T`layer`.as("layer"),
5399
- value: T`value`.as("value"),
5400
- source_id: T`source_id`.as("source_id"),
5401
- target_id: T`target_id`.as("target_id")
5402
- }).from(T`(${t}) AS final_union`);
5395
+ record_type: C`record_type`.as("record_type"),
5396
+ id: C`id`.as("id"),
5397
+ name: C`name`.as("name"),
5398
+ layer: C`layer`.as("layer"),
5399
+ value: C`value`.as("value"),
5400
+ source_id: C`source_id`.as("source_id"),
5401
+ target_id: C`target_id`.as("target_id")
5402
+ }).from(C`(${t}) AS final_union`);
5403
5403
  return e.db.$with("final_result").as(n);
5404
5404
  }
5405
5405
  };
5406
5406
  //#endregion
5407
5407
  //#region src/server/types/retention.ts
5408
- function lr(e) {
5408
+ function ur(e) {
5409
5409
  return Array.isArray(e);
5410
5410
  }
5411
- function ur(e) {
5411
+ function dr(e) {
5412
5412
  return typeof e == "object" && !!e && "cube" in e;
5413
5413
  }
5414
- function dr(e) {
5415
- if (ur(e)) return e.cube;
5414
+ function fr(e) {
5415
+ if (dr(e)) return e.cube;
5416
5416
  let t = e.indexOf(".");
5417
5417
  if (t === -1) throw Error(`Invalid time dimension format: ${e}. Expected 'CubeName.dimensionName'`);
5418
5418
  return e.substring(0, t);
5419
5419
  }
5420
- function fr(e) {
5421
- if (ur(e)) return e.dimension;
5420
+ function pr(e) {
5421
+ if (dr(e)) return e.dimension;
5422
5422
  let t = e.indexOf(".");
5423
5423
  if (t === -1) throw Error(`Invalid time dimension format: ${e}. Expected 'CubeName.dimensionName'`);
5424
5424
  return e.substring(t + 1);
5425
5425
  }
5426
5426
  //#endregion
5427
5427
  //#region src/server/builders/retention-query-builder.ts
5428
- var pr = {
5429
- noMapping: ({ cubeName: e }) => t("server.validation.retention.noBindingKeyMapping", { cubeName: e }),
5430
- cubeNotFound: ({ cubeName: e }) => t("server.validation.retention.bindingKeyCubeNotFound", { cubeName: e }),
5431
- keyDimNotFound: ({ bindingKey: e, cubeName: n }) => t("server.validation.retention.bindingKeyDimNotFound", {
5428
+ var mr = {
5429
+ noMapping: ({ cubeName: e }) => S("server.validation.retention.noBindingKeyMapping", { cubeName: e }),
5430
+ cubeNotFound: ({ cubeName: e }) => S("server.validation.retention.bindingKeyCubeNotFound", { cubeName: e }),
5431
+ keyDimNotFound: ({ bindingKey: e, cubeName: t }) => S("server.validation.retention.bindingKeyDimNotFound", {
5432
5432
  dimName: e,
5433
- cubeName: n
5433
+ cubeName: t
5434
5434
  }),
5435
- mappingDimNotFound: ({ dimension: e, cubeName: n }) => t("server.validation.retention.bindingKeyDimNotFound", {
5435
+ mappingDimNotFound: ({ dimension: e, cubeName: t }) => S("server.validation.retention.bindingKeyDimNotFound", {
5436
5436
  dimName: e,
5437
- cubeName: n
5437
+ cubeName: t
5438
5438
  })
5439
- }, mr = class {
5439
+ }, hr = class {
5440
5440
  databaseAdapter;
5441
5441
  filterBuilder;
5442
5442
  dateTimeBuilder;
@@ -5444,97 +5444,97 @@ var pr = {
5444
5444
  this.databaseAdapter = e, this.dateTimeBuilder = new I(e), this.filterBuilder = new B(e, this.dateTimeBuilder);
5445
5445
  }
5446
5446
  hasRetention(e) {
5447
- return h(e);
5447
+ return i(e);
5448
5448
  }
5449
- validateConfig(e, n) {
5450
- let r = [], i = this.databaseAdapter.getEngineType();
5451
- return (i === "sqlite" || i === "mysql" || i === "singlestore") && r.push(t("server.validation.retention.engineNotSupported", { engine: i })), this.validateTimeDimension(e, n, r), this.validateBindingKey(e, n, r), this.validateBreakdownDimensions(e, n, r), this.validatePeriodsAndEnums(e, r), this.validateDateRange(e, r), {
5452
- isValid: r.length === 0,
5453
- errors: r
5449
+ validateConfig(e, t) {
5450
+ let n = [], r = this.databaseAdapter.getEngineType();
5451
+ return (r === "sqlite" || r === "mysql" || r === "singlestore") && n.push(S("server.validation.retention.engineNotSupported", { engine: r })), this.validateTimeDimension(e, t, n), this.validateBindingKey(e, t, n), this.validateBreakdownDimensions(e, t, n), this.validatePeriodsAndEnums(e, n), this.validateDateRange(e, n), {
5452
+ isValid: n.length === 0,
5453
+ errors: n
5454
5454
  };
5455
5455
  }
5456
- validateTimeDimension(e, n, r) {
5456
+ validateTimeDimension(e, t, n) {
5457
5457
  try {
5458
- let i = dr(e.timeDimension), a = fr(e.timeDimension), o = n.get(i);
5459
- o ? o.dimensions?.[a] || r.push(t("server.validation.retention.timeDimNotFound", { dimName: a })) : r.push(t("server.validation.retention.cubeNotFound", { cubeName: i }));
5458
+ let r = fr(e.timeDimension), i = pr(e.timeDimension), a = t.get(r);
5459
+ a ? a.dimensions?.[i] || n.push(S("server.validation.retention.timeDimNotFound", { dimName: i })) : n.push(S("server.validation.retention.cubeNotFound", { cubeName: r }));
5460
5460
  } catch {
5461
- r.push(t("server.validation.retention.invalidTimeDimFormat", { timeDimension: e.timeDimension }));
5461
+ n.push(S("server.validation.retention.invalidTimeDimFormat", { timeDimension: e.timeDimension }));
5462
5462
  }
5463
5463
  }
5464
- validateBindingKey(e, n, r) {
5465
- if (lr(e.bindingKey)) {
5466
- for (let i of e.bindingKey) {
5467
- let e = n.get(i.cube);
5464
+ validateBindingKey(e, t, n) {
5465
+ if (ur(e.bindingKey)) {
5466
+ for (let r of e.bindingKey) {
5467
+ let e = t.get(r.cube);
5468
5468
  if (!e) {
5469
- r.push(t("server.validation.retention.bindingKeyMappingCubeNotFound", { cubeName: i.cube }));
5469
+ n.push(S("server.validation.retention.bindingKeyMappingCubeNotFound", { cubeName: r.cube }));
5470
5470
  continue;
5471
5471
  }
5472
- let a = Qt(i.dimension);
5473
- e.dimensions?.[a] || r.push(t("server.validation.retention.bindingKeyDimNotFound", {
5474
- dimName: a,
5475
- cubeName: i.cube
5472
+ let i = Qt(r.dimension);
5473
+ e.dimensions?.[i] || n.push(S("server.validation.retention.bindingKeyDimNotFound", {
5474
+ dimName: i,
5475
+ cubeName: r.cube
5476
5476
  }));
5477
5477
  }
5478
5478
  return;
5479
5479
  }
5480
- let [i, a] = e.bindingKey.split(".");
5481
- if (!i || !a) {
5482
- r.push(t("server.validation.retention.invalidBindingKeyFormat", { bindingKey: e.bindingKey }));
5480
+ let [r, i] = e.bindingKey.split(".");
5481
+ if (!r || !i) {
5482
+ n.push(S("server.validation.retention.invalidBindingKeyFormat", { bindingKey: e.bindingKey }));
5483
5483
  return;
5484
5484
  }
5485
- let o = n.get(i);
5486
- o ? o.dimensions?.[a] || r.push(t("server.validation.retention.bindingKeyDimNotFound", {
5487
- dimName: a,
5488
- cubeName: i
5489
- })) : r.push(t("server.validation.retention.bindingKeyCubeNotFound", { cubeName: i }));
5490
- }
5491
- validateBreakdownDimensions(e, n, r) {
5492
- if (!(!e.breakdownDimensions || e.breakdownDimensions.length === 0)) for (let i of e.breakdownDimensions) {
5493
- let [e, a] = i.split(".");
5494
- if (!e || !a) {
5495
- r.push(t("server.validation.retention.invalidBreakdownDimFormat", { dimension: i }));
5485
+ let a = t.get(r);
5486
+ a ? a.dimensions?.[i] || n.push(S("server.validation.retention.bindingKeyDimNotFound", {
5487
+ dimName: i,
5488
+ cubeName: r
5489
+ })) : n.push(S("server.validation.retention.bindingKeyCubeNotFound", { cubeName: r }));
5490
+ }
5491
+ validateBreakdownDimensions(e, t, n) {
5492
+ if (!(!e.breakdownDimensions || e.breakdownDimensions.length === 0)) for (let r of e.breakdownDimensions) {
5493
+ let [e, i] = r.split(".");
5494
+ if (!e || !i) {
5495
+ n.push(S("server.validation.retention.invalidBreakdownDimFormat", { dimension: r }));
5496
5496
  continue;
5497
5497
  }
5498
- let o = n.get(e);
5499
- o ? o.dimensions?.[a] || r.push(t("server.validation.retention.breakdownDimNotFound", {
5500
- dimName: a,
5498
+ let a = t.get(e);
5499
+ a ? a.dimensions?.[i] || n.push(S("server.validation.retention.breakdownDimNotFound", {
5500
+ dimName: i,
5501
5501
  cubeName: e
5502
- })) : r.push(t("server.validation.retention.breakdownDimCubeNotFound", { cubeName: e }));
5502
+ })) : n.push(S("server.validation.retention.breakdownDimCubeNotFound", { cubeName: e }));
5503
5503
  }
5504
5504
  }
5505
- validatePeriodsAndEnums(e, n) {
5506
- e.periods < 1 && n.push(t("server.validation.retention.periodsMin")), e.periods > 52 && n.push(t("server.validation.retention.periodsMax")), [
5505
+ validatePeriodsAndEnums(e, t) {
5506
+ e.periods < 1 && t.push(S("server.validation.retention.periodsMin")), e.periods > 52 && t.push(S("server.validation.retention.periodsMax")), [
5507
5507
  "day",
5508
5508
  "week",
5509
5509
  "month"
5510
- ].includes(e.granularity) || n.push(t("server.validation.retention.invalidGranularity", { granularity: e.granularity })), ["classic", "rolling"].includes(e.retentionType) || n.push(t("server.validation.retention.invalidRetentionType", { retentionType: e.retentionType }));
5510
+ ].includes(e.granularity) || t.push(S("server.validation.retention.invalidGranularity", { granularity: e.granularity })), ["classic", "rolling"].includes(e.retentionType) || t.push(S("server.validation.retention.invalidRetentionType", { retentionType: e.retentionType }));
5511
5511
  }
5512
- validateDateRange(e, n) {
5512
+ validateDateRange(e, t) {
5513
5513
  if (!e.dateRange) {
5514
- n.push(t("server.validation.retention.dateRangeRequired"));
5514
+ t.push(S("server.validation.retention.dateRangeRequired"));
5515
5515
  return;
5516
5516
  }
5517
- if (e.dateRange.start ? isNaN(new Date(e.dateRange.start).getTime()) && n.push(t("server.validation.retention.dateRangeInvalidStart")) : n.push(t("server.validation.retention.dateRangeStartRequired")), e.dateRange.end ? isNaN(new Date(e.dateRange.end).getTime()) && n.push(t("server.validation.retention.dateRangeInvalidEnd")) : n.push(t("server.validation.retention.dateRangeEndRequired")), e.dateRange.start && e.dateRange.end) {
5518
- let r = new Date(e.dateRange.start), i = new Date(e.dateRange.end);
5519
- !isNaN(r.getTime()) && !isNaN(i.getTime()) && r > i && n.push(t("server.validation.retention.dateRangeStartBeforeEnd"));
5517
+ if (e.dateRange.start ? isNaN(new Date(e.dateRange.start).getTime()) && t.push(S("server.validation.retention.dateRangeInvalidStart")) : t.push(S("server.validation.retention.dateRangeStartRequired")), e.dateRange.end ? isNaN(new Date(e.dateRange.end).getTime()) && t.push(S("server.validation.retention.dateRangeInvalidEnd")) : t.push(S("server.validation.retention.dateRangeEndRequired")), e.dateRange.start && e.dateRange.end) {
5518
+ let n = new Date(e.dateRange.start), r = new Date(e.dateRange.end);
5519
+ !isNaN(n.getTime()) && !isNaN(r.getTime()) && n > r && t.push(S("server.validation.retention.dateRangeStartBeforeEnd"));
5520
5520
  }
5521
5521
  }
5522
5522
  buildRetentionQuery(e, t, n) {
5523
5523
  let r = this.resolveConfig(e, t, n), i = r.breakdowns.length, a = this.buildCohortBaseCTE(e, r, n), o = this.buildActivityPeriodsCTE(e, r, n), s = this.buildCohortSizesCTE(e, n, i), c = this.buildRetentionCountsCTE(e, n, i), l = r.breakdowns.length > 0, u = {
5524
- period: T`rc.period_number`.as("period"),
5525
- cohort_size: T`cs.cohort_size`.as("cohort_size"),
5526
- retained_users: T`rc.retained_users`.as("retained_users"),
5527
- retention_rate: T`CAST(rc.retained_users AS NUMERIC) / NULLIF(cs.cohort_size, 0)`.as("retention_rate")
5524
+ period: C`rc.period_number`.as("period"),
5525
+ cohort_size: C`cs.cohort_size`.as("cohort_size"),
5526
+ retained_users: C`rc.retained_users`.as("retained_users"),
5527
+ retention_rate: C`CAST(rc.retained_users AS NUMERIC) / NULLIF(cs.cohort_size, 0)`.as("retention_rate")
5528
5528
  };
5529
- for (let e = 0; e < r.breakdowns.length; e++) u[`breakdown_${e}`] = T.raw(`rc.breakdown_${e}`).as(`breakdown_${e}`);
5530
- let d = n.db.with(a, o, s, c).select(u).from(T`retention_counts rc`);
5529
+ for (let e = 0; e < r.breakdowns.length; e++) u[`breakdown_${e}`] = C.raw(`rc.breakdown_${e}`).as(`breakdown_${e}`);
5530
+ let d = n.db.with(a, o, s, c).select(u).from(C`retention_counts rc`);
5531
5531
  if (l) {
5532
- let e = r.breakdowns.map((e, t) => T`COALESCE(CAST(rc.breakdown_${T.raw(String(t))} AS TEXT), '') = COALESCE(CAST(cs.breakdown_${T.raw(String(t))} AS TEXT), '')`), t = e.length === 1 ? e[0] : T.join(e, T` AND `);
5533
- d = d.innerJoin(T`cohort_sizes cs`, t);
5534
- } else d = d.innerJoin(T`cohort_sizes cs`, T`1 = 1`);
5532
+ let e = r.breakdowns.map((e, t) => C`COALESCE(CAST(rc.breakdown_${C.raw(String(t))} AS TEXT), '') = COALESCE(CAST(cs.breakdown_${C.raw(String(t))} AS TEXT), '')`), t = e.length === 1 ? e[0] : C.join(e, C` AND `);
5533
+ d = d.innerJoin(C`cohort_sizes cs`, t);
5534
+ } else d = d.innerJoin(C`cohort_sizes cs`, C`1 = 1`);
5535
5535
  let f = [];
5536
- for (let e = 0; e < r.breakdowns.length; e++) f.push(T.raw(`rc.breakdown_${e}`));
5537
- return f.push(T`rc.period_number`), d = d.orderBy(...f), d;
5536
+ for (let e = 0; e < r.breakdowns.length; e++) f.push(C.raw(`rc.breakdown_${e}`));
5537
+ return f.push(C`rc.period_number`), d = d.orderBy(...f), d;
5538
5538
  }
5539
5539
  transformResult(e, t) {
5540
5540
  let n = t.breakdownDimensions || [], r = Math.min(n.length, 100), i = r > 0;
@@ -5556,29 +5556,29 @@ var pr = {
5556
5556
  return t;
5557
5557
  });
5558
5558
  }
5559
- resolveConfig(e, n, r) {
5560
- let i = dr(e.timeDimension), a = fr(e.timeDimension), o = n.get(i);
5561
- if (!o) throw Error(t("server.validation.retention.cubeNotFound", { cubeName: i }));
5562
- let s = o.dimensions?.[a];
5563
- if (!s) throw Error(t("server.validation.retention.timeDimNotFound", { dimName: a }));
5564
- let c = f(s.sql, r), l = tn(e.bindingKey, o, r, pr, n), u = this.buildFilterConditions(e.cohortFilters, o, n, r), d = this.buildFilterConditions(e.activityFilters, o, n, r), p = [];
5565
- if (e.breakdownDimensions && e.breakdownDimensions.length > 0) for (let t of e.breakdownDimensions) {
5566
- let [e, i] = t.split("."), a = n.get(e);
5559
+ resolveConfig(e, t, n) {
5560
+ let r = fr(e.timeDimension), i = pr(e.timeDimension), a = t.get(r);
5561
+ if (!a) throw Error(S("server.validation.retention.cubeNotFound", { cubeName: r }));
5562
+ let o = a.dimensions?.[i];
5563
+ if (!o) throw Error(S("server.validation.retention.timeDimNotFound", { dimName: i }));
5564
+ let s = l(o.sql, n), c = tn(e.bindingKey, a, n, mr, t), u = this.buildFilterConditions(e.cohortFilters, a, t, n), d = this.buildFilterConditions(e.activityFilters, a, t, n), f = [];
5565
+ if (e.breakdownDimensions && e.breakdownDimensions.length > 0) for (let r of e.breakdownDimensions) {
5566
+ let [e, i] = r.split("."), a = t.get(e);
5567
5567
  if (a && a.dimensions?.[i]) {
5568
- let e = f(a.dimensions[i].sql, r);
5569
- p.push({
5570
- dimension: t,
5568
+ let e = l(a.dimensions[i].sql, n);
5569
+ f.push({
5570
+ dimension: r,
5571
5571
  expr: e
5572
5572
  });
5573
5573
  }
5574
5574
  }
5575
5575
  return {
5576
- cube: o,
5577
- bindingKeyExpr: l,
5578
- timeExpr: c,
5576
+ cube: a,
5577
+ bindingKeyExpr: c,
5578
+ timeExpr: s,
5579
5579
  cohortFilterConditions: u,
5580
5580
  activityFilterConditions: d,
5581
- breakdowns: p
5581
+ breakdowns: f
5582
5582
  };
5583
5583
  }
5584
5584
  buildFilterConditions(e, t, n, r) {
@@ -5590,21 +5590,21 @@ var pr = {
5590
5590
  }
5591
5591
  return a;
5592
5592
  }
5593
- buildSingleFilterCondition(e, t, r, i) {
5593
+ buildSingleFilterCondition(e, t, n, r) {
5594
5594
  if ("and" in e || "or" in e) {
5595
- let a = e, o = [], s = "and" in a && !!a.and, c = a.and || a.or || [];
5596
- for (let e of c) {
5597
- let n = this.buildSingleFilterCondition(e, t, r, i);
5598
- n && o.push(n);
5595
+ let i = e, a = [], o = "and" in i && !!i.and, s = i.and || i.or || [];
5596
+ for (let e of s) {
5597
+ let i = this.buildSingleFilterCondition(e, t, n, r);
5598
+ i && a.push(i);
5599
5599
  }
5600
- return o.length === 0 ? null : o.length === 1 ? o[0] : s ? n(...o) : T`(${T.join(o, T` OR `)})`;
5600
+ return a.length === 0 ? null : a.length === 1 ? a[0] : o ? w(...a) : C`(${C.join(a, C` OR `)})`;
5601
5601
  }
5602
- let a = e, [o, s] = a.member.split("."), c = r.get(o);
5602
+ let i = e, [a, s] = i.member.split("."), c = n.get(a);
5603
5603
  if (!c) return null;
5604
- let u = c.dimensions?.[s];
5605
- if (!u) return null;
5606
- let d = l(u, i);
5607
- return this.filterBuilder.buildFilterCondition(d, a.operator, a.values || [], u, a.dateRange);
5604
+ let l = c.dimensions?.[s];
5605
+ if (!l) return null;
5606
+ let u = o(l, r);
5607
+ return this.filterBuilder.buildFilterCondition(u, i.operator, i.values || [], l, i.dateRange);
5608
5608
  }
5609
5609
  buildCohortBaseCTE(e, t, n) {
5610
5610
  let r = t.cube.sql(n), i = [];
@@ -5613,12 +5613,12 @@ var pr = {
5613
5613
  i.push(n);
5614
5614
  }
5615
5615
  let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = {
5616
- binding_key: T`${t.bindingKeyExpr}`.as("binding_key"),
5617
- cohort_entry: T`MIN(${a})`.as("cohort_entry")
5616
+ binding_key: C`${t.bindingKeyExpr}`.as("binding_key"),
5617
+ cohort_entry: C`MIN(${a})`.as("cohort_entry")
5618
5618
  };
5619
5619
  for (let e = 0; e < t.breakdowns.length; e++) {
5620
5620
  let { expr: n } = t.breakdowns[e];
5621
- o[`breakdown_${e}`] = T`MIN(${n})`.as(`breakdown_${e}`);
5621
+ o[`breakdown_${e}`] = C`MIN(${n})`.as(`breakdown_${e}`);
5622
5622
  }
5623
5623
  let s = n.db.select(o).from(r.from);
5624
5624
  i.length > 0 && (s = s.where(R(i)));
@@ -5631,35 +5631,35 @@ var pr = {
5631
5631
  return n.db.$with("cohort_base").as(s);
5632
5632
  }
5633
5633
  buildDateRangeCondition(e, t) {
5634
- let n = this.databaseAdapter.castToType(T`${t.start}`, "timestamp"), r = this.databaseAdapter.buildDateAddInterval(this.databaseAdapter.castToType(T`${t.end}`, "timestamp"), "P1D");
5635
- return T`${e} >= ${n} AND ${e} < ${r}`;
5634
+ let n = this.databaseAdapter.castToType(C`${t.start}`, "timestamp"), r = this.databaseAdapter.buildDateAddInterval(this.databaseAdapter.castToType(C`${t.end}`, "timestamp"), "P1D");
5635
+ return C`${e} >= ${n} AND ${e} < ${r}`;
5636
5636
  }
5637
5637
  buildDateRangeHavingCondition(e, t) {
5638
- let n = this.databaseAdapter.castToType(T`${t.start}`, "timestamp"), r = this.databaseAdapter.buildDateAddInterval(this.databaseAdapter.castToType(T`${t.end}`, "timestamp"), "P1D");
5639
- return T`MIN(${e}) >= ${n} AND MIN(${e}) < ${r}`;
5638
+ let n = this.databaseAdapter.castToType(C`${t.start}`, "timestamp"), r = this.databaseAdapter.buildDateAddInterval(this.databaseAdapter.castToType(C`${t.end}`, "timestamp"), "P1D");
5639
+ return C`MIN(${e}) >= ${n} AND MIN(${e}) < ${r}`;
5640
5640
  }
5641
5641
  buildActivityPeriodsCTE(e, t, n) {
5642
5642
  let r = t.cube.sql(n), i = [];
5643
- r.where && i.push(r.where), i.push(...t.activityFilterConditions), i.push(T`${t.timeExpr} >= cohort_base.cohort_entry`);
5644
- let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = this.buildPeriodNumberExpression(T`cohort_base.cohort_entry`, a, e.granularity), s = {
5645
- binding_key: T`cohort_base.binding_key`.as("binding_key"),
5643
+ r.where && i.push(r.where), i.push(...t.activityFilterConditions), i.push(C`${t.timeExpr} >= cohort_base.cohort_entry`);
5644
+ let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = this.buildPeriodNumberExpression(C`cohort_base.cohort_entry`, a, e.granularity), s = {
5645
+ binding_key: C`cohort_base.binding_key`.as("binding_key"),
5646
5646
  period_number: o.as("period_number")
5647
5647
  };
5648
- for (let e = 0; e < t.breakdowns.length; e++) s[`breakdown_${e}`] = T.raw(`cohort_base.breakdown_${e}`).as(`breakdown_${e}`);
5649
- let c = n.db.select(s).from(r.from).innerJoin(T`cohort_base`, T`${t.bindingKeyExpr} = cohort_base.binding_key`);
5648
+ for (let e = 0; e < t.breakdowns.length; e++) s[`breakdown_${e}`] = C.raw(`cohort_base.breakdown_${e}`).as(`breakdown_${e}`);
5649
+ let c = n.db.select(s).from(r.from).innerJoin(C`cohort_base`, C`${t.bindingKeyExpr} = cohort_base.binding_key`);
5650
5650
  i.length > 0 && (c = c.where(R(i)));
5651
- let l = [T`cohort_base.binding_key`, o];
5652
- for (let e = 0; e < t.breakdowns.length; e++) l.push(T.raw(`cohort_base.breakdown_${e}`));
5651
+ let l = [C`cohort_base.binding_key`, o];
5652
+ for (let e = 0; e < t.breakdowns.length; e++) l.push(C.raw(`cohort_base.breakdown_${e}`));
5653
5653
  return c = c.groupBy(...l), n.db.$with("activity_periods").as(c);
5654
5654
  }
5655
5655
  buildCohortSizesCTE(e, t, n) {
5656
5656
  if (n > 0) {
5657
- let e = { cohort_size: T`COUNT(*)`.as("cohort_size") }, r = [];
5658
- for (let t = 0; t < n; t++) e[`breakdown_${t}`] = T.raw(`breakdown_${t}`).as(`breakdown_${t}`), r.push(T.raw(`breakdown_${t}`));
5659
- let i = t.db.select(e).from(T`cohort_base`).groupBy(...r);
5657
+ let e = { cohort_size: C`COUNT(*)`.as("cohort_size") }, r = [];
5658
+ for (let t = 0; t < n; t++) e[`breakdown_${t}`] = C.raw(`breakdown_${t}`).as(`breakdown_${t}`), r.push(C.raw(`breakdown_${t}`));
5659
+ let i = t.db.select(e).from(C`cohort_base`).groupBy(...r);
5660
5660
  return t.db.$with("cohort_sizes").as(i);
5661
5661
  }
5662
- let r = t.db.select({ cohort_size: T`COUNT(*)`.as("cohort_size") }).from(T`cohort_base`);
5662
+ let r = t.db.select({ cohort_size: C`COUNT(*)`.as("cohort_size") }).from(C`cohort_base`);
5663
5663
  return t.db.$with("cohort_sizes").as(r);
5664
5664
  }
5665
5665
  buildRetentionCountsCTE(e, t, n) {
@@ -5667,32 +5667,32 @@ var pr = {
5667
5667
  if (e.retentionType === "rolling") r = this.buildRollingRetentionCountsQuery(e, t, n);
5668
5668
  else {
5669
5669
  let i = {
5670
- period_number: T`period_number`.as("period_number"),
5671
- retained_users: T`COUNT(DISTINCT binding_key)`.as("retained_users")
5672
- }, a = [T`period_number`];
5673
- for (let e = 0; e < n; e++) i[`breakdown_${e}`] = T.raw(`breakdown_${e}`).as(`breakdown_${e}`), a.push(T.raw(`breakdown_${e}`));
5670
+ period_number: C`period_number`.as("period_number"),
5671
+ retained_users: C`COUNT(DISTINCT binding_key)`.as("retained_users")
5672
+ }, a = [C`period_number`];
5673
+ for (let e = 0; e < n; e++) i[`breakdown_${e}`] = C.raw(`breakdown_${e}`).as(`breakdown_${e}`), a.push(C.raw(`breakdown_${e}`));
5674
5674
  let o = Math.min(e.periods, 52);
5675
- r = t.db.select(i).from(T`activity_periods`).where(T`period_number >= 0 AND period_number <= ${o}`).groupBy(...a);
5675
+ r = t.db.select(i).from(C`activity_periods`).where(C`period_number >= 0 AND period_number <= ${o}`).groupBy(...a);
5676
5676
  }
5677
5677
  return t.db.$with("retention_counts").as(r);
5678
5678
  }
5679
5679
  buildRollingRetentionCountsQuery(e, t, n) {
5680
5680
  let r = [];
5681
5681
  for (let e = 0; e < n; e++) r.push(`breakdown_${e}`);
5682
- let i = r.length > 0 ? `, ${r.join(", ")}` : "", a = Math.min(e.periods, 52), o = T`(
5682
+ let i = r.length > 0 ? `, ${r.join(", ")}` : "", a = Math.min(e.periods, 52), o = C`(
5683
5683
  SELECT
5684
5684
  binding_key,
5685
- ${T.raw(r.map((e) => `${e}`).join(", ") + (r.length > 0 ? "," : ""))}
5685
+ ${C.raw(r.map((e) => `${e}`).join(", ") + (r.length > 0 ? "," : ""))}
5686
5686
  MAX(period_number) as max_period
5687
5687
  FROM activity_periods
5688
5688
  WHERE period_number >= 0 AND period_number <= ${a}
5689
- GROUP BY binding_key${T.raw(i)}
5689
+ GROUP BY binding_key${C.raw(i)}
5690
5690
  )`, s = this.databaseAdapter.buildPeriodSeriesSubquery(a), c = {
5691
- period_number: T`p.period_number`.as("period_number"),
5692
- retained_users: T`COUNT(DISTINCT CASE WHEN ump.max_period >= p.period_number THEN ump.binding_key END)`.as("retained_users")
5693
- }, l = [T`p.period_number`];
5694
- for (let e = 0; e < n; e++) c[`breakdown_${e}`] = T.raw(`ump.breakdown_${e}`).as(`breakdown_${e}`), l.push(T.raw(`ump.breakdown_${e}`));
5695
- return t.db.select(c).from(T`${o} ump`).innerJoin(s, T`TRUE`).groupBy(...l);
5691
+ period_number: C`p.period_number`.as("period_number"),
5692
+ retained_users: C`COUNT(DISTINCT CASE WHEN ump.max_period >= p.period_number THEN ump.binding_key END)`.as("retained_users")
5693
+ }, l = [C`p.period_number`];
5694
+ for (let e = 0; e < n; e++) c[`breakdown_${e}`] = C.raw(`ump.breakdown_${e}`).as(`breakdown_${e}`), l.push(C.raw(`ump.breakdown_${e}`));
5695
+ return t.db.select(c).from(C`${o} ump`).innerJoin(s, C`TRUE`).groupBy(...l);
5696
5696
  }
5697
5697
  buildPeriodNumberExpression(e, t, n) {
5698
5698
  return this.databaseAdapter.buildDateDiffPeriods(e, t, n);
@@ -5700,51 +5700,51 @@ var pr = {
5700
5700
  };
5701
5701
  //#endregion
5702
5702
  //#region src/server/logical-plan/schema-builder.ts
5703
- function Z(e) {
5703
+ function X(e) {
5704
5704
  return {
5705
5705
  name: e.name,
5706
5706
  cube: e
5707
5707
  };
5708
5708
  }
5709
- function hr(e, n) {
5709
+ function Z(e, t) {
5710
5710
  return e.measures ? e.measures.map((e) => {
5711
- let [r, i] = e.split("."), a = n.get(r);
5712
- if (!a) throw Error(t("server.errors.cubeNotFoundForMeasure", {
5713
- cubeName: r,
5711
+ let [n, r] = e.split("."), i = t.get(n);
5712
+ if (!i) throw Error(S("server.errors.cubeNotFoundForMeasure", {
5713
+ cubeName: n,
5714
5714
  measure: e
5715
5715
  }));
5716
5716
  return {
5717
5717
  name: e,
5718
- cube: Z(a),
5719
- localName: i
5718
+ cube: X(i),
5719
+ localName: r
5720
5720
  };
5721
5721
  }) : [];
5722
5722
  }
5723
- function gr(e, n) {
5723
+ function gr(e, t) {
5724
5724
  return e.dimensions ? e.dimensions.map((e) => {
5725
- let [r, i] = e.split("."), a = n.get(r);
5726
- if (!a) throw Error(t("server.errors.cubeNotFoundForDimension", {
5727
- cubeName: r,
5725
+ let [n, r] = e.split("."), i = t.get(n);
5726
+ if (!i) throw Error(S("server.errors.cubeNotFoundForDimension", {
5727
+ cubeName: n,
5728
5728
  dimension: e
5729
5729
  }));
5730
5730
  return {
5731
5731
  name: e,
5732
- cube: Z(a),
5733
- localName: i
5732
+ cube: X(i),
5733
+ localName: r
5734
5734
  };
5735
5735
  }) : [];
5736
5736
  }
5737
- function _r(e, n) {
5737
+ function _r(e, t) {
5738
5738
  return e.timeDimensions ? e.timeDimensions.map((e) => {
5739
- let [r, i] = e.dimension.split("."), a = n.get(r);
5740
- if (!a) throw Error(t("server.errors.cubeNotFoundForTimeDimension", {
5741
- cubeName: r,
5739
+ let [n, r] = e.dimension.split("."), i = t.get(n);
5740
+ if (!i) throw Error(S("server.errors.cubeNotFoundForTimeDimension", {
5741
+ cubeName: n,
5742
5742
  timeDimension: e.dimension
5743
5743
  }));
5744
5744
  return {
5745
5745
  name: e.dimension,
5746
- cube: Z(a),
5747
- localName: i,
5746
+ cube: X(i),
5747
+ localName: r,
5748
5748
  granularity: e.granularity,
5749
5749
  dateRange: e.dateRange,
5750
5750
  fillMissingDates: e.fillMissingDates,
@@ -5754,7 +5754,7 @@ function _r(e, n) {
5754
5754
  }
5755
5755
  function vr(e, t) {
5756
5756
  return {
5757
- measures: hr(e, t),
5757
+ measures: Z(e, t),
5758
5758
  dimensions: gr(e, t),
5759
5759
  timeDimensions: _r(e, t)
5760
5760
  };
@@ -5786,57 +5786,57 @@ var br = class {
5786
5786
  plan(e, t, n) {
5787
5787
  return this.planWithAnalysis(e, t, n).plan;
5788
5788
  }
5789
- planWithAnalysis(e, n, r) {
5790
- let i = Array.from(this.queryPlanner.analyzeCubeUsage(n));
5791
- if (i.length === 0) throw Error(t("server.errors.noCubesInQuery"));
5792
- let a = this.queryPlanner.analyzePrimaryCube(i, n, e), o = a.selectedCube, s = e.get(o);
5793
- if (!s) throw Error(t("server.errors.primaryCubeNotFound", { cubeName: o }));
5794
- let c = i.filter((e) => e !== o).map((t) => this.queryPlanner.analyzeJoinPathForTarget(e, o, t, n)), l = i.length > 1 ? this.queryPlanner.buildJoinPlanForPrimary(e, s, i, r, n) : [], u = i.length > 1 ? this.queryPlanner.buildPreAggregationCTEs(e, s, l, n, r) ?? [] : [], d = this.queryPlanner.buildWarnings(n, u), f = this.buildSourceFromPhases(s, l, u, e, n, r), p = f.source, m = this.buildQueryNode(p, n, e, d), h = this.buildPreAggregationAnalysis(u), g = /* @__PURE__ */ new Map();
5795
- for (let t of i) {
5789
+ planWithAnalysis(e, t, n) {
5790
+ let r = Array.from(this.queryPlanner.analyzeCubeUsage(t));
5791
+ if (r.length === 0) throw Error(S("server.errors.noCubesInQuery"));
5792
+ let i = this.queryPlanner.analyzePrimaryCube(r, t, e), a = i.selectedCube, o = e.get(a);
5793
+ if (!o) throw Error(S("server.errors.primaryCubeNotFound", { cubeName: a }));
5794
+ let s = r.filter((e) => e !== a).map((n) => this.queryPlanner.analyzeJoinPathForTarget(e, a, n, t)), c = r.length > 1 ? this.queryPlanner.buildJoinPlanForPrimary(e, o, r, n, t) : [], l = r.length > 1 ? this.queryPlanner.buildPreAggregationCTEs(e, o, c, t, n) ?? [] : [], u = this.queryPlanner.buildWarnings(t, l), d = this.buildSourceFromPhases(o, c, l, e, t, n), f = d.source, p = this.buildQueryNode(f, t, e, u), m = this.buildPreAggregationAnalysis(l), h = /* @__PURE__ */ new Map();
5795
+ for (let t of r) {
5796
5796
  let n = e.get(t);
5797
- n && g.set(t, n);
5797
+ n && h.set(t, n);
5798
5798
  }
5799
- let _ = ln(n.measures ?? [], g), v = [...c.filter((e) => !e.pathFound && e.error).map((e) => e.error), ...d.map((e) => e.message)];
5799
+ let g = ln(t.measures ?? [], h), _ = [...s.filter((e) => !e.pathFound && e.error).map((e) => e.error), ...u.map((e) => e.message)];
5800
5800
  return {
5801
- plan: m,
5801
+ plan: p,
5802
5802
  analysis: {
5803
5803
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
5804
- cubeCount: i.length,
5805
- cubesInvolved: [...i].sort(),
5806
- primaryCube: a,
5807
- joinPaths: c,
5808
- preAggregations: h,
5804
+ cubeCount: r.length,
5805
+ cubesInvolved: [...r].sort(),
5806
+ primaryCube: i,
5807
+ joinPaths: s,
5808
+ preAggregations: m,
5809
5809
  querySummary: {
5810
- queryType: u.length > 0 ? "multi_cube_cte" : i.length > 1 ? "multi_cube_join" : "single_cube",
5811
- measureStrategy: f.strategy,
5812
- joinCount: l.length,
5813
- cteCount: u.length,
5814
- hasPreAggregation: u.length > 0,
5815
- hasWindowFunctions: _
5810
+ queryType: l.length > 0 ? "multi_cube_cte" : r.length > 1 ? "multi_cube_join" : "single_cube",
5811
+ measureStrategy: d.strategy,
5812
+ joinCount: c.length,
5813
+ cteCount: l.length,
5814
+ hasPreAggregation: l.length > 0,
5815
+ hasWindowFunctions: g
5816
5816
  },
5817
- warnings: v.length > 0 ? v : void 0,
5817
+ warnings: _.length > 0 ? _ : void 0,
5818
5818
  planningTrace: { steps: [
5819
5819
  {
5820
5820
  phase: "cube_usage",
5821
- decision: `Identified ${i.length} cube${i.length === 1 ? "" : "s"} from query members`,
5822
- details: { cubesInvolved: [...i].sort() }
5821
+ decision: `Identified ${r.length} cube${r.length === 1 ? "" : "s"} from query members`,
5822
+ details: { cubesInvolved: [...r].sort() }
5823
5823
  },
5824
5824
  {
5825
5825
  phase: "primary_cube_selection",
5826
- decision: `Selected '${a.selectedCube}' as primary cube (${a.reason})`,
5826
+ decision: `Selected '${i.selectedCube}' as primary cube (${i.reason})`,
5827
5827
  details: {
5828
- selectedCube: a.selectedCube,
5829
- reason: a.reason,
5830
- candidates: a.candidates?.map((e) => e.cubeName)
5828
+ selectedCube: i.selectedCube,
5829
+ reason: i.reason,
5830
+ candidates: i.candidates?.map((e) => e.cubeName)
5831
5831
  }
5832
5832
  },
5833
5833
  {
5834
5834
  phase: "join_planning",
5835
- decision: `Planned ${l.length} join${l.length === 1 ? "" : "s"}`,
5835
+ decision: `Planned ${c.length} join${c.length === 1 ? "" : "s"}`,
5836
5836
  details: {
5837
- joinCount: l.length,
5838
- joinTargets: l.map((e) => e.target.name),
5839
- pathSelection: c.map((e) => ({
5837
+ joinCount: c.length,
5838
+ joinTargets: c.map((e) => e.target.name),
5839
+ pathSelection: s.map((e) => ({
5840
5840
  targetCube: e.targetCube,
5841
5841
  strategy: e.selection?.strategy,
5842
5842
  selectedRank: e.selection?.selectedRank,
@@ -5846,27 +5846,27 @@ var br = class {
5846
5846
  },
5847
5847
  {
5848
5848
  phase: "cte_planning",
5849
- decision: `Planned ${u.length} pre-aggregation CTE${u.length === 1 ? "" : "s"}`,
5849
+ decision: `Planned ${l.length} pre-aggregation CTE${l.length === 1 ? "" : "s"}`,
5850
5850
  details: {
5851
- cteCount: u.length,
5852
- cubes: u.map((e) => e.cube.name)
5851
+ cteCount: l.length,
5852
+ cubes: l.map((e) => e.cube.name)
5853
5853
  }
5854
5854
  },
5855
5855
  {
5856
5856
  phase: "measure_strategy",
5857
- decision: `Selected '${f.strategy}' measure strategy`,
5857
+ decision: `Selected '${d.strategy}' measure strategy`,
5858
5858
  details: {
5859
- strategy: f.strategy,
5860
- regularMeasures: f.classification.regular.map((e) => e.name),
5861
- multipliedMeasures: f.classification.multiplied.map((e) => e.name),
5862
- deduplicationSafeMeasures: f.classification.deduplicationSafe.map((e) => e.name),
5863
- sourceType: p.type
5859
+ strategy: d.strategy,
5860
+ regularMeasures: d.classification.regular.map((e) => e.name),
5861
+ multipliedMeasures: d.classification.multiplied.map((e) => e.name),
5862
+ deduplicationSafeMeasures: d.classification.deduplicationSafe.map((e) => e.name),
5863
+ sourceType: f.type
5864
5864
  }
5865
5865
  },
5866
5866
  {
5867
5867
  phase: "warnings",
5868
- decision: d.length > 0 ? `Generated ${d.length} planning warning${d.length === 1 ? "" : "s"}` : "No planning warnings generated",
5869
- details: { warningCodes: d.map((e) => e.code) }
5868
+ decision: u.length > 0 ? `Generated ${u.length} planning warning${u.length === 1 ? "" : "s"}` : "No planning warnings generated",
5869
+ details: { warningCodes: u.map((e) => e.code) }
5870
5870
  }
5871
5871
  ] }
5872
5872
  }
@@ -5878,7 +5878,7 @@ var br = class {
5878
5878
  source: o,
5879
5879
  strategy: "multiFactMerge",
5880
5880
  classification: {
5881
- regular: hr(i, r),
5881
+ regular: Z(i, r),
5882
5882
  multiplied: [],
5883
5883
  deduplicationSafe: []
5884
5884
  }
@@ -5895,8 +5895,8 @@ var br = class {
5895
5895
  };
5896
5896
  }
5897
5897
  buildSimpleSourceFromPhases(e, t, n, r, i) {
5898
- let a = Z(e), o = t, s = n.map((e) => {
5899
- let t = Z(e.cube);
5898
+ let a = X(e), o = t, s = n.map((e) => {
5899
+ let t = X(e.cube);
5900
5900
  return {
5901
5901
  type: "ctePreAggregate",
5902
5902
  schema: yr(e, r),
@@ -5943,7 +5943,7 @@ var br = class {
5943
5943
  let o = Array.from(r);
5944
5944
  if (!o.every((e) => this.hasDirectJoinToSharedDimension(t.get(e), a, t))) return null;
5945
5945
  let s = gr(e, t), c = _r(e, t), l = {
5946
- measures: hr(e, t),
5946
+ measures: Z(e, t),
5947
5947
  dimensions: s,
5948
5948
  timeDimensions: c
5949
5949
  }, u = [];
@@ -5968,7 +5968,7 @@ var br = class {
5968
5968
  hasDirectJoinToSharedDimension(e, t, n) {
5969
5969
  if (!e?.joins) return !1;
5970
5970
  for (let [, r] of Object.entries(e.joins)) {
5971
- let e = o(r.targetCube, n);
5971
+ let e = h(r.targetCube, n);
5972
5972
  if (!(!e || e.name !== t) && (r.relationship === "belongsTo" || r.relationship === "hasOne")) return !0;
5973
5973
  }
5974
5974
  return !1;
@@ -6161,19 +6161,19 @@ function Sr(e, t, n, r) {
6161
6161
  downstreamCubeMap: s
6162
6162
  };
6163
6163
  }
6164
- function Cr(e, t, r) {
6165
- let i = /* @__PURE__ */ new Map();
6166
- if (!e.preAggregationCTEs || e.preAggregationCTEs.length === 0) return i;
6167
- for (let a of e.preAggregationCTEs) if (!(!a.propagatingFilters || a.propagatingFilters.length === 0)) for (let e of a.propagatingFilters) {
6168
- let a = e.sourceCube.name;
6169
- if (!i.has(a)) {
6170
- let n = { filters: e.filters }, o = /* @__PURE__ */ new Map([[a, e.sourceCube]]), s = r.queryBuilder.buildWhereConditions(o, n, t);
6171
- i.set(a, s);
6164
+ function Cr(e, t, n) {
6165
+ let r = /* @__PURE__ */ new Map();
6166
+ if (!e.preAggregationCTEs || e.preAggregationCTEs.length === 0) return r;
6167
+ for (let i of e.preAggregationCTEs) if (!(!i.propagatingFilters || i.propagatingFilters.length === 0)) for (let e of i.propagatingFilters) {
6168
+ let i = e.sourceCube.name;
6169
+ if (!r.has(i)) {
6170
+ let a = { filters: e.filters }, o = /* @__PURE__ */ new Map([[i, e.sourceCube]]), s = n.queryBuilder.buildWhereConditions(o, a, t);
6171
+ r.set(i, s);
6172
6172
  }
6173
- let o = i.get(a);
6174
- o && o.length > 0 && (e.preBuiltFilterSQL = o.length === 1 ? o[0] : n(...o));
6173
+ let a = r.get(i);
6174
+ a && a.length > 0 && (e.preBuiltFilterSQL = a.length === 1 ? a[0] : w(...a));
6175
6175
  }
6176
- return i;
6176
+ return r;
6177
6177
  }
6178
6178
  function wr(e, t) {
6179
6179
  if (e.downstreamJoinKeys) for (let n of e.downstreamJoinKeys) t.set(n.targetCubeName, {
@@ -6195,21 +6195,21 @@ function Tr(e, t, n, r, i, a) {
6195
6195
  if (!m?.measures?.[p]) continue;
6196
6196
  let h = m.measures[p], g = t.preAggregationCTEs?.find((e) => e.cube?.name === f && e.measures?.includes(d)), _;
6197
6197
  if (g) {
6198
- let e = T`${T.identifier(g.cteAlias)}.${T.identifier(p)}`;
6199
- _ = T`sum(${e})`;
6198
+ let e = C`${C.identifier(g.cteAlias)}.${C.identifier(p)}`;
6199
+ _ = C`sum(${e})`;
6200
6200
  } else _ = a.queryBuilder.buildMeasureExpression(h, r, m);
6201
- e[d] || (e[d] = T`${_}`.as(d));
6201
+ e[d] || (e[d] = C`${_}`.as(d));
6202
6202
  let v = Er(u, _, n, r, l, t, a);
6203
- v && (e[o] = T`${v}`.as(o));
6203
+ v && (e[o] = C`${v}`.as(o));
6204
6204
  }
6205
6205
  }
6206
6206
  function Er(e, t, n, r, i, a, o) {
6207
6207
  let s = e.windowConfig || {}, c = (e, t) => {
6208
6208
  if (!a.preAggregationCTEs) return null;
6209
6209
  let n = a.preAggregationCTEs.find((t) => t.cube?.name === e);
6210
- return n && n.cteAlias ? T`${T.identifier(n.cteAlias)}.${T.identifier(t)}` : null;
6211
- }, l;
6212
- if (s.orderBy && s.orderBy.length > 0) l = s.orderBy.map((e) => {
6210
+ return n && n.cteAlias ? C`${C.identifier(n.cteAlias)}.${C.identifier(t)}` : null;
6211
+ }, u;
6212
+ if (s.orderBy && s.orderBy.length > 0) u = s.orderBy.map((e) => {
6213
6213
  let a = e.field.includes(".") ? e.field.split(".")[1] : e.field;
6214
6214
  if (n.timeDimensions) for (let t of n.timeDimensions) {
6215
6215
  let [n, s] = t.dimension.split(".");
@@ -6226,9 +6226,9 @@ function Er(e, t, n, r, i, a, o) {
6226
6226
  };
6227
6227
  }
6228
6228
  }
6229
- let l = i.dimensions?.[a];
6230
- return l ? {
6231
- field: f(l.sql, r),
6229
+ let u = i.dimensions?.[a];
6230
+ return u ? {
6231
+ field: l(u.sql, r),
6232
6232
  direction: e.direction
6233
6233
  } : a === (s.measure?.includes(".") ? s.measure.split(".")[1] : s.measure) || e.field === s.measure ? {
6234
6234
  field: t,
@@ -6237,7 +6237,7 @@ function Er(e, t, n, r, i, a, o) {
6237
6237
  }).filter((e) => e !== null);
6238
6238
  else if (n.timeDimensions && n.timeDimensions.length > 0) {
6239
6239
  let e = n.timeDimensions[0], [t, a] = e.dimension.split("."), s = c(t, a);
6240
- if (s) l = [{
6240
+ if (s) u = [{
6241
6241
  field: s,
6242
6242
  direction: "asc"
6243
6243
  }];
@@ -6245,30 +6245,30 @@ function Er(e, t, n, r, i, a, o) {
6245
6245
  let n = i.name === t ? i : void 0;
6246
6246
  if (n?.dimensions?.[a]) {
6247
6247
  let t = n.dimensions[a];
6248
- l = [{
6248
+ u = [{
6249
6249
  field: o.queryBuilder.buildTimeDimensionExpression(t.sql, e.granularity, r),
6250
6250
  direction: "asc"
6251
6251
  }];
6252
6252
  }
6253
6253
  }
6254
6254
  }
6255
- let u;
6256
- s.partitionBy && s.partitionBy.length > 0 && (u = s.partitionBy.map((e) => {
6255
+ let d;
6256
+ s.partitionBy && s.partitionBy.length > 0 && (d = s.partitionBy.map((e) => {
6257
6257
  let t = e.includes(".") ? e.split(".")[1] : e, n = i.dimensions?.[t];
6258
- return n ? f(n.sql, r) : null;
6258
+ return n ? l(n.sql, r) : null;
6259
6259
  }).filter((e) => e !== null));
6260
- let d = o.databaseAdapter.buildWindowFunction(e.type, t, u, l, {
6260
+ let f = o.databaseAdapter.buildWindowFunction(e.type, t, d, u, {
6261
6261
  offset: s.offset,
6262
6262
  defaultValue: s.defaultValue,
6263
6263
  nTile: s.nTile,
6264
6264
  frame: s.frame
6265
6265
  });
6266
- if (!d) return null;
6266
+ if (!f) return null;
6267
6267
  switch (s.operation || U.getDefaultWindowOperation(e.type)) {
6268
- case "difference": return T`${t} - ${d}`;
6269
- case "ratio": return T`${t} / NULLIF(${d}, 0)`;
6270
- case "percentChange": return T`((${t} - ${d}) / NULLIF(${d}, 0)) * 100`;
6271
- default: return d;
6268
+ case "difference": return C`${t} - ${f}`;
6269
+ case "ratio": return C`${t} / NULLIF(${f}, 0)`;
6270
+ case "percentChange": return C`((${t} - ${f}) / NULLIF(${f}, 0)) * 100`;
6271
+ default: return f;
6272
6272
  }
6273
6273
  }
6274
6274
  //#endregion
@@ -6284,8 +6284,8 @@ function Or(e, t, n, r, i, a) {
6284
6284
  if (!e[s]) continue;
6285
6285
  let [, c] = s.split("."), l = i.get(o);
6286
6286
  if (!l?.measures?.[c]) continue;
6287
- let u = l.measures[c], d = T`${T.identifier(t.cteAlias)}.${T.identifier(c)}`, f;
6288
- f = u.type === "calculated" && u.calculatedSql ? a.queryBuilder.buildCTECalculatedMeasure(u, l, t, i, r) : kr(u, d, t, n, i, a), e[s] = T`${f}`.as(s);
6287
+ let u = l.measures[c], d = C`${C.identifier(t.cteAlias)}.${C.identifier(c)}`, f;
6288
+ f = u.type === "calculated" && u.calculatedSql ? a.queryBuilder.buildCTECalculatedMeasure(u, l, t, i, r) : kr(u, d, t, n, i, a), e[s] = C`${f}`.as(s);
6289
6289
  }
6290
6290
  }
6291
6291
  function kr(e, t, n, r, i, a) {
@@ -6313,7 +6313,7 @@ function Ar(e, t, n) {
6313
6313
  let e = s.dimensions[o].sql;
6314
6314
  u = t.joinKeys.find((t) => t.targetColumnObj === e);
6315
6315
  }
6316
- (u || l && s?.dimensions?.[o]) && (e[i] = T`${T.identifier(t.cteAlias)}.${T.identifier(o)}`.as(i));
6316
+ (u || l && s?.dimensions?.[o]) && (e[i] = C`${C.identifier(t.cteAlias)}.${C.identifier(o)}`.as(i));
6317
6317
  }
6318
6318
  }
6319
6319
  function jr(e, t, n) {
@@ -6394,61 +6394,61 @@ function Rr(e, t, n, r, i, a) {
6394
6394
  return e;
6395
6395
  }
6396
6396
  }
6397
- function zr(e, t, r, i) {
6398
- let a = e.joinCondition, o = e.sourceCubeName ? i.cteAliasMap.get(e.sourceCubeName) : void 0;
6399
- if (!o) return a;
6400
- let s = (r.preAggregationCTEs?.find((t) => t.cube.name === e.sourceCubeName))?.downstreamJoinKeys?.find((e) => e.targetCubeName === t.cube.name);
6401
- if (s && s.joinKeys.length > 0) {
6397
+ function zr(e, t, n, r) {
6398
+ let i = e.joinCondition, a = e.sourceCubeName ? r.cteAliasMap.get(e.sourceCubeName) : void 0;
6399
+ if (!a) return i;
6400
+ let o = (n.preAggregationCTEs?.find((t) => t.cube.name === e.sourceCubeName))?.downstreamJoinKeys?.find((e) => e.targetCubeName === t.cube.name);
6401
+ if (o && o.joinKeys.length > 0) {
6402
6402
  let e = [];
6403
- for (let t of s.joinKeys) {
6404
- let n = T`${T.identifier(o)}.${T.identifier(t.sourceColumn)}`, r = t.targetColumnObj;
6405
- r && e.push(x(r, n));
6403
+ for (let t of o.joinKeys) {
6404
+ let n = C`${C.identifier(a)}.${C.identifier(t.sourceColumn)}`, r = t.targetColumnObj;
6405
+ r && e.push(b(r, n));
6406
6406
  }
6407
- e.length > 0 && (a = n(...e));
6407
+ e.length > 0 && (i = w(...e));
6408
6408
  }
6409
- return a;
6409
+ return i;
6410
6410
  }
6411
- function Br(e, t, r, i, a, o) {
6411
+ function Br(e, t, n, r, i, a) {
6412
6412
  if (t) return {
6413
- joinTarget: T`${T.identifier(t)}`,
6414
- joinCondition: o.cteBuilder.buildCTEJoinCondition(e, t, i),
6413
+ joinTarget: C`${C.identifier(t)}`,
6414
+ joinCondition: a.cteBuilder.buildCTEJoinCondition(e, t, r),
6415
6415
  securityCondition: void 0,
6416
6416
  joinCubeBase: void 0
6417
6417
  };
6418
- let s = r.downstreamCubeMap.get(e.cube.name), c = e.cube.sql(a), l;
6419
- if (s && !e.junctionTable) {
6418
+ let o = n.downstreamCubeMap.get(e.cube.name), s = e.cube.sql(i), c;
6419
+ if (o && !e.junctionTable) {
6420
6420
  let e = [];
6421
- for (let t of s.joinKeys) {
6422
- let n = T`${T.identifier(s.cteAlias)}.${T.identifier(t.sourceColumn)}`, r = t.targetColumnObj || T.identifier(t.targetColumn);
6423
- e.push(x(n, r));
6421
+ for (let t of o.joinKeys) {
6422
+ let n = C`${C.identifier(o.cteAlias)}.${C.identifier(t.sourceColumn)}`, r = t.targetColumnObj || C.identifier(t.targetColumn);
6423
+ e.push(b(n, r));
6424
6424
  }
6425
- l = e.length === 1 ? e[0] : n(...e);
6426
- } else l = e.joinCondition;
6425
+ c = e.length === 1 ? e[0] : w(...e);
6426
+ } else c = e.joinCondition;
6427
6427
  return {
6428
- joinTarget: c.from,
6429
- joinCondition: l,
6430
- securityCondition: c.where,
6431
- joinCubeBase: c
6428
+ joinTarget: s.from,
6429
+ joinCondition: c,
6430
+ securityCondition: s.where,
6431
+ joinCubeBase: s
6432
6432
  };
6433
6433
  }
6434
- function Vr(e, t, r, i, a, o, s) {
6435
- let { joinTarget: c, joinCondition: l, securityCondition: u, joinCubeBase: d } = Br(t, i.cteAliasMap.get(t.cube.name), i, r, a, o), f = t.joinType || "left", p = f !== "inner" && u ? n(l, u) : l;
6434
+ function Vr(e, t, n, r, i, a, o) {
6435
+ let { joinTarget: s, joinCondition: c, securityCondition: l, joinCubeBase: u } = Br(t, r.cteAliasMap.get(t.cube.name), r, n, i, a), d = t.joinType || "left", f = d !== "inner" && l ? w(c, l) : c;
6436
6436
  try {
6437
6437
  let n;
6438
- return f === "inner" ? n = e.innerJoin(c, l) : (n = Q(e, f, c, p), u && s.add(t.cube.name)), Ir(n, d?.joins);
6438
+ return d === "inner" ? n = e.innerJoin(s, c) : (n = Q(e, d, s, f), l && o.add(t.cube.name)), Ir(n, u?.joins);
6439
6439
  } catch {
6440
6440
  return e;
6441
6441
  }
6442
6442
  }
6443
6443
  //#endregion
6444
6444
  //#region src/server/physical-plan/processors/predicates-processor.ts
6445
- function Hr(e, t, r, i, a, o, s, c) {
6446
- let l = Ur(e, t, r, i, a, o, s, c), u = s.drizzleQuery;
6447
- if (l.length > 0) {
6448
- let e = l.length === 1 ? l[0] : n(...l);
6449
- u = u.where(e);
6445
+ function Hr(e, t, n, r, i, a, o, s) {
6446
+ let c = Ur(e, t, n, r, i, a, o, s), l = o.drizzleQuery;
6447
+ if (c.length > 0) {
6448
+ let e = c.length === 1 ? c[0] : w(...c);
6449
+ l = l.where(e);
6450
6450
  }
6451
- return Wr(u, e, t, r, i, c);
6451
+ return Wr(l, e, t, n, r, s);
6452
6452
  }
6453
6453
  function Ur(e, t, n, r, i, a, o, s) {
6454
6454
  let c = [...o.allWhereConditions];
@@ -6461,17 +6461,17 @@ function Ur(e, t, n, r, i, a, o, s) {
6461
6461
  let l = s.queryBuilder.buildWhereConditions(e.joinCubes.length > 0 ? r : e.primaryCube, t, n, e, a.preBuiltFilterMap);
6462
6462
  return l.length > 0 && c.push(...l), c;
6463
6463
  }
6464
- function Wr(e, t, r, i, a, o) {
6465
- let s = t.joinCubes.length > 0 ? a : t.primaryCube, c = e, l = o.queryBuilder.buildGroupByFields(s, r, i, t);
6466
- if (l.length > 0 && (c = c.groupBy(...l)), !r.ungrouped) {
6467
- let e = o.queryBuilder.buildHavingConditions(s, r, i, t);
6464
+ function Wr(e, t, n, r, i, a) {
6465
+ let o = t.joinCubes.length > 0 ? i : t.primaryCube, s = e, c = a.queryBuilder.buildGroupByFields(o, n, r, t);
6466
+ if (c.length > 0 && (s = s.groupBy(...c)), !n.ungrouped) {
6467
+ let e = a.queryBuilder.buildHavingConditions(o, n, r, t);
6468
6468
  if (e.length > 0) {
6469
- let t = e.length === 1 ? e[0] : n(...e);
6470
- c = c.having(t);
6469
+ let t = e.length === 1 ? e[0] : w(...e);
6470
+ s = s.having(t);
6471
6471
  }
6472
6472
  }
6473
- let u = o.queryBuilder.buildOrderBy(r);
6474
- return u.length > 0 && (c = c.orderBy(...u)), o.queryBuilder.applyLimitAndOffset(c, r);
6473
+ let l = a.queryBuilder.buildOrderBy(n);
6474
+ return l.length > 0 && (s = s.orderBy(...l)), a.queryBuilder.applyLimitAndOffset(s, n);
6475
6475
  }
6476
6476
  //#endregion
6477
6477
  //#region src/server/physical-plan/processors/keys-dedup-processor.ts
@@ -6501,37 +6501,37 @@ function Kr(e, t, n, r, i, a, o) {
6501
6501
  if (e.dimensions) for (let n of e.dimensions) {
6502
6502
  let [e, i] = n.split("."), a = r.get(e), o = a?.dimensions?.[i];
6503
6503
  if (!a || !o) return null;
6504
- let l = f(o.sql, t);
6505
- s[n] = T`${l}`.as(n), c.push(l);
6504
+ let u = l(o.sql, t);
6505
+ s[n] = C`${u}`.as(n), c.push(u);
6506
6506
  }
6507
6507
  if (e.timeDimensions) for (let i of e.timeDimensions) {
6508
6508
  let [e, a] = i.dimension.split("."), o = r.get(e), l = o?.dimensions?.[a];
6509
6509
  if (!o || !l) return null;
6510
6510
  let u = n.queryBuilder.buildTimeDimensionExpression(l.sql, i.granularity, t);
6511
- s[i.dimension] = T`${u}`.as(i.dimension), c.push(u);
6511
+ s[i.dimension] = C`${u}`.as(i.dimension), c.push(u);
6512
6512
  }
6513
- let l = [];
6513
+ let u = [];
6514
6514
  for (let e of a) {
6515
6515
  let n = i.dimensions?.[e];
6516
6516
  if (!n) return null;
6517
- let r = f(n.sql, t), a = `__pk__${e}`;
6518
- s[a] = T`${r}`.as(a), c.push(r), l.push(a);
6517
+ let r = l(n.sql, t), a = `__pk__${e}`;
6518
+ s[a] = C`${r}`.as(a), c.push(r), u.push(a);
6519
6519
  }
6520
- let u = new Set(o), d = e.measures.filter((e) => !u.has(e));
6520
+ let d = new Set(o), f = e.measures.filter((e) => !d.has(e));
6521
6521
  if (o.length > 0) {
6522
6522
  let e = n.queryBuilder.buildResolvedMeasures(o, r, t);
6523
6523
  for (let t of o) {
6524
6524
  let n = e.get(t);
6525
6525
  if (!n) return null;
6526
6526
  let r = `__reg__${t.replace(".", "__")}`;
6527
- s[r] = T`${n()}`.as(r);
6527
+ s[r] = C`${n()}`.as(r);
6528
6528
  }
6529
6529
  }
6530
6530
  return {
6531
6531
  keysSelections: s,
6532
6532
  keyGroupBy: c,
6533
- pkAliases: l,
6534
- multipliedMeasures: d
6533
+ pkAliases: u,
6534
+ multipliedMeasures: f
6535
6535
  };
6536
6536
  }
6537
6537
  function qr(e, t, n, r, i, a, o, s) {
@@ -6567,8 +6567,8 @@ function Zr(e, t, n, r, i) {
6567
6567
  for (let t of r) {
6568
6568
  let r = n.dimensions?.[t];
6569
6569
  if (!r) return null;
6570
- let i = f(r.sql, e);
6571
- a[t] = T`${i}`.as(t), o.push(i);
6570
+ let i = l(r.sql, e);
6571
+ a[t] = C`${i}`.as(t), o.push(i);
6572
6572
  }
6573
6573
  let s = /* @__PURE__ */ new Set();
6574
6574
  for (let e of i) {
@@ -6584,7 +6584,7 @@ function Zr(e, t, n, r, i) {
6584
6584
  for (let e of c) {
6585
6585
  let [, t] = e.split("."), n = r.get(e);
6586
6586
  if (!n || typeof n != "function") return null;
6587
- a[t] = T`${n()}`.as(t);
6587
+ a[t] = C`${n()}`.as(t);
6588
6588
  }
6589
6589
  }
6590
6590
  for (let t of i) {
@@ -6592,8 +6592,8 @@ function Zr(e, t, n, r, i) {
6592
6592
  if (!s.has(r)) continue;
6593
6593
  let i = n.measures?.[r];
6594
6594
  if (!i?.sql) return null;
6595
- let o = f(i.sql, e), c = `__avg_sum__${r}`, l = `__avg_count__${r}`;
6596
- a[c] = T`sum(${o})`.as(c), a[l] = T`count(${o})`.as(l);
6595
+ let o = l(i.sql, e), c = `__avg_sum__${r}`, u = `__avg_count__${r}`;
6596
+ a[c] = C`sum(${o})`.as(c), a[u] = C`count(${o})`.as(u);
6597
6597
  }
6598
6598
  return {
6599
6599
  aggSelections: a,
@@ -6601,26 +6601,26 @@ function Zr(e, t, n, r, i) {
6601
6601
  };
6602
6602
  }
6603
6603
  function Qr(e, t) {
6604
- return t.length === 0 ? e : e.where(t.length === 1 ? t[0] : n(...t));
6604
+ return t.length === 0 ? e : e.where(t.length === 1 ? t[0] : w(...t));
6605
6605
  }
6606
- function $r(e, t, r, i, a, o) {
6607
- let { keysAlias: s, aggAlias: c, keysCte: l, aggCte: u, pkDimensions: d, pkAliases: f, multipliedMeasures: p, regularMeasureNames: m } = o, h = {};
6608
- for (let t of e.dimensions ?? []) h[t] = T`${T.identifier(s)}.${T.identifier(t)}`.as(t);
6609
- for (let t of e.timeDimensions ?? []) h[t.dimension] = T`${T.identifier(s)}.${T.identifier(t.dimension)}`.as(t.dimension);
6610
- for (let e of p) {
6611
- let [, t] = e.split("."), n = a.measures?.[t];
6612
- h[e] = ri(n?.type ?? "sum", c, t, e);
6606
+ function $r(e, t, n, r, i, a) {
6607
+ let { keysAlias: o, aggAlias: s, keysCte: c, aggCte: l, pkDimensions: u, pkAliases: d, multipliedMeasures: f, regularMeasureNames: p } = a, m = {};
6608
+ for (let t of e.dimensions ?? []) m[t] = C`${C.identifier(o)}.${C.identifier(t)}`.as(t);
6609
+ for (let t of e.timeDimensions ?? []) m[t.dimension] = C`${C.identifier(o)}.${C.identifier(t.dimension)}`.as(t.dimension);
6610
+ for (let e of f) {
6611
+ let [, t] = e.split("."), n = i.measures?.[t];
6612
+ m[e] = ri(n?.type ?? "sum", s, t, e);
6613
6613
  }
6614
- for (let e of m) {
6615
- let [t, n] = e.split("."), r = i.get(t)?.measures?.[n], a = `__reg__${e.replace(".", "__")}`;
6616
- h[e] = ri(r?.type ?? "sum", s, a, e);
6614
+ for (let e of p) {
6615
+ let [t, n] = e.split("."), i = r.get(t)?.measures?.[n], a = `__reg__${e.replace(".", "__")}`;
6616
+ m[e] = ri(i?.type ?? "sum", o, a, e);
6617
6617
  }
6618
- let g = t.db.with(l, u).select(h).from(T`${T.identifier(s)}`), _ = f.map((e, t) => x(T`${T.identifier(s)}.${T.identifier(e)}`, T`${T.identifier(c)}.${T.identifier(d[t])}`)), v = _.length === 1 ? _[0] : n(..._);
6619
- g = g.leftJoin(T`${T.identifier(c)}`, v);
6620
- let y = [...(e.dimensions ?? []).map((e) => T`${T.identifier(s)}.${T.identifier(e)}`), ...(e.timeDimensions ?? []).map((e) => T`${T.identifier(s)}.${T.identifier(e.dimension)}`)];
6621
- y.length > 0 && (g = g.groupBy(...y));
6622
- let b = r.queryBuilder.buildOrderBy(e, Object.keys(h));
6623
- return b.length > 0 && (g = g.orderBy(...b)), r.queryBuilder.applyLimitAndOffset(g, e);
6618
+ let h = t.db.with(c, l).select(m).from(C`${C.identifier(o)}`), g = d.map((e, t) => b(C`${C.identifier(o)}.${C.identifier(e)}`, C`${C.identifier(s)}.${C.identifier(u[t])}`)), _ = g.length === 1 ? g[0] : w(...g);
6619
+ h = h.leftJoin(C`${C.identifier(s)}`, _);
6620
+ let v = [...(e.dimensions ?? []).map((e) => C`${C.identifier(o)}.${C.identifier(e)}`), ...(e.timeDimensions ?? []).map((e) => C`${C.identifier(o)}.${C.identifier(e.dimension)}`)];
6621
+ v.length > 0 && (h = h.groupBy(...v));
6622
+ let y = n.queryBuilder.buildOrderBy(e, Object.keys(m));
6623
+ return y.length > 0 && (h = h.orderBy(...y)), n.queryBuilder.applyLimitAndOffset(h, e);
6624
6624
  }
6625
6625
  function ei(e, t, n) {
6626
6626
  if (!e.measures?.length) return !1;
@@ -6666,20 +6666,20 @@ function ni(e) {
6666
6666
  function ri(e, t, n, r) {
6667
6667
  switch (e) {
6668
6668
  case "min": {
6669
- let e = T`${T.identifier(t)}.${T.identifier(n)}`;
6670
- return T`min(${e})`.as(r);
6669
+ let e = C`${C.identifier(t)}.${C.identifier(n)}`;
6670
+ return C`min(${e})`.as(r);
6671
6671
  }
6672
6672
  case "max": {
6673
- let e = T`${T.identifier(t)}.${T.identifier(n)}`;
6674
- return T`max(${e})`.as(r);
6673
+ let e = C`${C.identifier(t)}.${C.identifier(n)}`;
6674
+ return C`max(${e})`.as(r);
6675
6675
  }
6676
6676
  case "avg": {
6677
- let e = T`${T.identifier(t)}.${T.identifier(`__avg_sum__${n}`)}`, i = T`${T.identifier(t)}.${T.identifier(`__avg_count__${n}`)}`;
6678
- return T`sum(${e}) / nullif(sum(${i}), 0)`.as(r);
6677
+ let e = C`${C.identifier(t)}.${C.identifier(`__avg_sum__${n}`)}`, i = C`${C.identifier(t)}.${C.identifier(`__avg_count__${n}`)}`;
6678
+ return C`sum(${e}) / nullif(sum(${i}), 0)`.as(r);
6679
6679
  }
6680
6680
  default: {
6681
- let e = T`${T.identifier(t)}.${T.identifier(n)}`;
6682
- return T`coalesce(sum(${e}), 0)`.as(r);
6681
+ let e = C`${C.identifier(t)}.${C.identifier(n)}`;
6682
+ return C`coalesce(sum(${e}), 0)`.as(r);
6683
6683
  }
6684
6684
  }
6685
6685
  }
@@ -6698,47 +6698,47 @@ function ai(e, t, n) {
6698
6698
  let r = {};
6699
6699
  for (let e of t) {
6700
6700
  let t = fi(n, e);
6701
- r[e] = T`${t}`.as(e);
6701
+ r[e] = C`${t}`.as(e);
6702
6702
  }
6703
6703
  for (let t of e.groups) for (let e of t.measures) {
6704
- let n = T`${T.identifier(t.alias)}.${T.identifier(e)}`;
6705
- r[e] = T`coalesce(${n}, 0)`.as(e);
6704
+ let n = C`${C.identifier(t.alias)}.${C.identifier(e)}`;
6705
+ r[e] = C`coalesce(${n}, 0)`.as(e);
6706
6706
  }
6707
6707
  return r;
6708
6708
  }
6709
- function oi(e, t, r) {
6710
- if (t.length === 0) return T`1 = 1`;
6711
- let i = t.map((t) => x(r.get(t), T`${T.identifier(e)}.${T.identifier(t)}`));
6712
- return i.length === 1 ? i[0] : n(...i);
6709
+ function oi(e, t, n) {
6710
+ if (t.length === 0) return C`1 = 1`;
6711
+ let r = t.map((t) => b(n.get(t), C`${C.identifier(e)}.${C.identifier(t)}`));
6712
+ return r.length === 1 ? r[0] : w(...r);
6713
6713
  }
6714
6714
  function si(e, t, n, r, i, a, o) {
6715
- let s = r.groups[0].alias, c = ai(r, a, r.groups.map((e) => e.alias)), l = t.db.with(...i).select(c).from(T`${T.identifier(s)}`), u = /* @__PURE__ */ new Map();
6716
- for (let e of a) u.set(e, T`${T.identifier(s)}.${T.identifier(e)}`);
6715
+ let s = r.groups[0].alias, c = ai(r, a, r.groups.map((e) => e.alias)), l = t.db.with(...i).select(c).from(C`${C.identifier(s)}`), u = /* @__PURE__ */ new Map();
6716
+ for (let e of a) u.set(e, C`${C.identifier(s)}.${C.identifier(e)}`);
6717
6717
  for (let e = 1; e < r.groups.length; e++) {
6718
6718
  let t = r.groups[e].alias, n = oi(t, a, u);
6719
- if (l = Q(l, o, T`${T.identifier(t)}`, n), a.length > 0 && o === "full") for (let e of a) u.set(e, T`coalesce(${u.get(e)}, ${T`${T.identifier(t)}.${T.identifier(e)}`})`);
6719
+ if (l = Q(l, o, C`${C.identifier(t)}`, n), a.length > 0 && o === "full") for (let e of a) u.set(e, C`coalesce(${u.get(e)}, ${C`${C.identifier(t)}.${C.identifier(e)}`})`);
6720
6720
  }
6721
6721
  let d = n.queryBuilder.buildOrderBy(e, Object.keys(c));
6722
6722
  return d.length > 0 && (l = l.orderBy(...d)), n.queryBuilder.applyLimitAndOffset(l, e);
6723
6723
  }
6724
- function ci(e, t, r, i, a, o) {
6725
- let s = "mf_all_keys", c = i.groups.map((e) => T`select ${li(e.alias, o)} from ${T.identifier(e.alias)}`), l = T`${T.join(c, T` union `)}`, u = t.db.$with(s).as(l), d = {};
6726
- for (let e of o) d[e] = T`${T.identifier(s)}.${T.identifier(e)}`.as(e);
6727
- for (let e of i.groups) for (let t of e.measures) {
6728
- let n = T`${T.identifier(e.alias)}.${T.identifier(t)}`;
6729
- d[t] = T`coalesce(${n}, 0)`.as(t);
6724
+ function ci(e, t, n, r, i, a) {
6725
+ let o = "mf_all_keys", s = r.groups.map((e) => C`select ${li(e.alias, a)} from ${C.identifier(e.alias)}`), c = C`${C.join(s, C` union `)}`, l = t.db.$with(o).as(c), u = {};
6726
+ for (let e of a) u[e] = C`${C.identifier(o)}.${C.identifier(e)}`.as(e);
6727
+ for (let e of r.groups) for (let t of e.measures) {
6728
+ let n = C`${C.identifier(e.alias)}.${C.identifier(t)}`;
6729
+ u[t] = C`coalesce(${n}, 0)`.as(t);
6730
6730
  }
6731
- let f = t.db.with(...a, u).select(d).from(T`${T.identifier(s)}`);
6732
- for (let e of i.groups) {
6733
- let t = o.map((t) => x(T`${T.identifier(s)}.${T.identifier(t)}`, T`${T.identifier(e.alias)}.${T.identifier(t)}`)), r = t.length === 1 ? t[0] : n(...t);
6734
- f = f.leftJoin(T`${T.identifier(e.alias)}`, r);
6731
+ let d = t.db.with(...i, l).select(u).from(C`${C.identifier(o)}`);
6732
+ for (let e of r.groups) {
6733
+ let t = a.map((t) => b(C`${C.identifier(o)}.${C.identifier(t)}`, C`${C.identifier(e.alias)}.${C.identifier(t)}`)), n = t.length === 1 ? t[0] : w(...t);
6734
+ d = d.leftJoin(C`${C.identifier(e.alias)}`, n);
6735
6735
  }
6736
- let p = r.queryBuilder.buildOrderBy(e, Object.keys(d));
6737
- return p.length > 0 && (f = f.orderBy(...p)), r.queryBuilder.applyLimitAndOffset(f, e);
6736
+ let f = n.queryBuilder.buildOrderBy(e, Object.keys(u));
6737
+ return f.length > 0 && (d = d.orderBy(...f)), n.queryBuilder.applyLimitAndOffset(d, e);
6738
6738
  }
6739
6739
  function li(e, t) {
6740
- let n = t.map((t) => T`${T.identifier(e)}.${T.identifier(t)} as ${T.identifier(t)}`);
6741
- return T.join(n, T`, `);
6740
+ let n = t.map((t) => C`${C.identifier(e)}.${C.identifier(t)} as ${C.identifier(t)}`);
6741
+ return C.join(n, C`, `);
6742
6742
  }
6743
6743
  function ui(e, t, n) {
6744
6744
  return !t || e === "innerJoin" ? "inner" : e === "leftJoin" ? "left" : n ? "full" : "left";
@@ -6748,9 +6748,9 @@ function di(e) {
6748
6748
  return t === "postgres" || t === "duckdb";
6749
6749
  }
6750
6750
  function fi(e, t) {
6751
- if (e.length === 1) return T`${T.identifier(e[0])}.${T.identifier(t)}`;
6752
- let n = e.map((e) => T`${T.identifier(e)}.${T.identifier(t)}`), r = n[0];
6753
- for (let e = 1; e < n.length; e++) r = T`coalesce(${r}, ${n[e]})`;
6751
+ if (e.length === 1) return C`${C.identifier(e[0])}.${C.identifier(t)}`;
6752
+ let n = e.map((e) => C`${C.identifier(e)}.${C.identifier(t)}`), r = n[0];
6753
+ for (let e = 1; e < n.length; e++) r = C`coalesce(${r}, ${n[e]})`;
6754
6754
  return r;
6755
6755
  }
6756
6756
  //#endregion
@@ -6788,7 +6788,7 @@ var pi = class {
6788
6788
  }
6789
6789
  materializeJoin(e) {
6790
6790
  if (e.junctionTable) {
6791
- let t = p(e.joinDef);
6791
+ let t = oe(e.joinDef);
6792
6792
  return {
6793
6793
  cube: e.target.cube,
6794
6794
  alias: e.alias,
@@ -6809,7 +6809,7 @@ var pi = class {
6809
6809
  cube: e.target.cube,
6810
6810
  alias: e.alias,
6811
6811
  joinType: e.joinType,
6812
- joinCondition: oe(e.joinDef),
6812
+ joinCondition: t(e.joinDef),
6813
6813
  relationship: e.relationship
6814
6814
  };
6815
6815
  }
@@ -6947,42 +6947,42 @@ var mi = class {
6947
6947
  resultCache;
6948
6948
  filterCachePreloader;
6949
6949
  rlsSetup;
6950
- constructor(e, n, r, i) {
6951
- if (this.dbExecutor = e, this.databaseAdapter = e.databaseAdapter, !this.databaseAdapter) throw Error(t("server.errors.dbAdapterRequired"));
6950
+ constructor(e, t, n, r) {
6951
+ if (this.dbExecutor = e, this.databaseAdapter = e.databaseAdapter, !this.databaseAdapter) throw Error(S("server.errors.dbAdapterRequired"));
6952
6952
  this.queryBuilder = new gn(this.databaseAdapter);
6953
- let a = new kn(), o = new An(this.queryBuilder);
6954
- this.drizzlePlanBuilder = new pi(this.queryBuilder, o, this.databaseAdapter), this.comparisonQueryBuilder = new or(this.databaseAdapter), this.funnelQueryBuilder = new sr(this.databaseAdapter), this.flowQueryBuilder = new cr(this.databaseAdapter), this.retentionQueryBuilder = new mr(this.databaseAdapter), this.logicalPlanBuilder = new br(a), this.planOptimiser = i ?? new xr(), this.rlsSetup = r, this.modeRouter = new Zn({
6953
+ let i = new kn(), a = new jn(this.queryBuilder);
6954
+ this.drizzlePlanBuilder = new pi(this.queryBuilder, a, this.databaseAdapter), this.comparisonQueryBuilder = new sr(this.databaseAdapter), this.funnelQueryBuilder = new cr(this.databaseAdapter), this.flowQueryBuilder = new lr(this.databaseAdapter), this.retentionQueryBuilder = new hr(this.databaseAdapter), this.logicalPlanBuilder = new br(i), this.planOptimiser = r ?? new xr(), this.rlsSetup = n, this.modeRouter = new Qn({
6955
6955
  comparison: this.comparisonQueryBuilder,
6956
6956
  funnel: this.funnelQueryBuilder,
6957
6957
  flow: this.flowQueryBuilder,
6958
6958
  retention: this.retentionQueryBuilder
6959
- }), this.resultCache = new ar(n), this.filterCachePreloader = new Xn(this.queryBuilder);
6960
- }
6961
- async withRLSContext(e, n) {
6962
- if (!this.rlsSetup) return n();
6963
- let r = this.dbExecutor.db;
6964
- if (!r.transaction) throw Error(t("server.errors.rlsRequiresTransactions"));
6965
- let i = this.rlsSetup;
6966
- return r.transaction(async (t) => {
6967
- await i(t, e);
6968
- let r = Object.create(this.dbExecutor);
6969
- return r.db = t, this.dbExecutor = r, n();
6959
+ }), this.resultCache = new or(t), this.filterCachePreloader = new Zn(this.queryBuilder);
6960
+ }
6961
+ async withRLSContext(e, t) {
6962
+ if (!this.rlsSetup) return t();
6963
+ let n = this.dbExecutor.db;
6964
+ if (!n.transaction) throw Error(S("server.errors.rlsRequiresTransactions"));
6965
+ let r = this.rlsSetup;
6966
+ return n.transaction(async (n) => {
6967
+ await r(n, e);
6968
+ let i = Object.create(this.dbExecutor);
6969
+ return i.db = n, this.dbExecutor = i, t();
6970
6970
  });
6971
6971
  }
6972
- async execute(e, n, r, i) {
6972
+ async execute(e, t, n, r) {
6973
6973
  try {
6974
- let t = this.modeRouter.resolveMode(n);
6975
- this.modeRouter.validateForMode(t, e, n);
6976
- let a = this.resultCache.generateKey(n, r, i?.cubeSetKey);
6977
- return await this.resultCache.lookup(a, i?.skipCache ?? !1) || await this.withRLSContext(r, () => this.executeQueryByModeWithCache(t, e, n, r, a));
6974
+ let i = this.modeRouter.resolveMode(t);
6975
+ this.modeRouter.validateForMode(i, e, t);
6976
+ let a = this.resultCache.generateKey(t, n, r?.cubeSetKey);
6977
+ return await this.resultCache.lookup(a, r?.skipCache ?? !1) || await this.withRLSContext(n, () => this.executeQueryByModeWithCache(i, e, t, n, a));
6978
6978
  } catch (e) {
6979
6979
  if (e instanceof Error) {
6980
- let n = e;
6981
- for (; n.cause instanceof Error;) n = n.cause;
6982
- let r = n.message, i = n;
6983
- throw i.code && (r += ` [${i.code}]`), i.detail && (r += ` Detail: ${i.detail}`), i.hint && (r += ` Hint: ${i.hint}`), e.message = t("server.errors.queryExecutionFailed", { message: r }), e;
6980
+ let t = e;
6981
+ for (; t.cause instanceof Error;) t = t.cause;
6982
+ let n = t.message, r = t;
6983
+ throw r.code && (n += ` [${r.code}]`), r.detail && (n += ` Detail: ${r.detail}`), r.hint && (n += ` Hint: ${r.hint}`), e.message = S("server.errors.queryExecutionFailed", { message: n }), e;
6984
6984
  }
6985
- throw Error(t("server.errors.queryExecutionUnknown"), { cause: e });
6985
+ throw Error(S("server.errors.queryExecutionUnknown"), { cause: e });
6986
6986
  }
6987
6987
  }
6988
6988
  buildLogicalPlan(e, t, n) {
@@ -7009,16 +7009,16 @@ var mi = class {
7009
7009
  return l.data = this.comparisonQueryBuilder.sortComparisonResults(l.data, r.dimension), l;
7010
7010
  }
7011
7011
  buildComparisonExecutionPlan(e) {
7012
- let n = this.comparisonQueryBuilder.getComparisonTimeDimension(e);
7013
- if (!n || !n.compareDateRange) throw Error(t("server.errors.noCompareDateRange"));
7014
- let r = this.comparisonQueryBuilder.normalizePeriods(n.compareDateRange);
7015
- if (r.length < 2) throw Error(t("server.errors.compareDateRangeInvalid"));
7016
- let i = r.map((t) => this.comparisonQueryBuilder.createPeriodQuery(e, t));
7012
+ let t = this.comparisonQueryBuilder.getComparisonTimeDimension(e);
7013
+ if (!t || !t.compareDateRange) throw Error(S("server.errors.noCompareDateRange"));
7014
+ let n = this.comparisonQueryBuilder.normalizePeriods(t.compareDateRange);
7015
+ if (n.length < 2) throw Error(S("server.errors.compareDateRangeInvalid"));
7016
+ let r = n.map((t) => this.comparisonQueryBuilder.createPeriodQuery(e, t));
7017
7017
  return {
7018
- timeDimension: n,
7019
- granularity: n.granularity || "day",
7020
- periods: r,
7021
- periodQueries: i
7018
+ timeDimension: t,
7019
+ granularity: t.granularity || "day",
7020
+ periods: n,
7021
+ periodQueries: r
7022
7022
  };
7023
7023
  }
7024
7024
  async executeAnalysisQueryWithCache(e, t) {
@@ -7093,8 +7093,8 @@ var mi = class {
7093
7093
  let l = this.drizzlePlanBuilder.build(s, c, a);
7094
7094
  $("query", l);
7095
7095
  let u = this.queryBuilder.collectNumericFields(e, t), d = {
7096
- data: Yn(await this.dbExecutor.execute(l, u), t, this.databaseAdapter),
7097
- annotation: jn(s, t),
7096
+ data: Xn(await this.dbExecutor.execute(l, u), t, this.databaseAdapter),
7097
+ annotation: Mn(s, t),
7098
7098
  warnings: o.warnings?.length ? o.warnings : void 0,
7099
7099
  total: t.total ? await this.executeTotalCount(s, c, a) : void 0
7100
7100
  };
@@ -7106,7 +7106,7 @@ var mi = class {
7106
7106
  limit: void 0,
7107
7107
  offset: void 0,
7108
7108
  order: void 0
7109
- }, n), i = n.db.select({ total: T`count(*)`.as("total") }).from(r.as("dc_total"));
7109
+ }, n), i = n.db.select({ total: C`count(*)`.as("total") }).from(r.as("dc_total"));
7110
7110
  $("total", i);
7111
7111
  let a = await this.dbExecutor.execute(i), o = a?.[0] ? Object.values(a[0])[0] : void 0, s = Number(o);
7112
7112
  return Number.isFinite(s) ? s : 0;
@@ -7185,14 +7185,14 @@ var mi = class {
7185
7185
  build: (t, n) => this.retentionQueryBuilder.buildRetentionQuery(t, e, n)
7186
7186
  });
7187
7187
  }
7188
- async dryRunAnalysis(e, n, r) {
7189
- if (!r.has(e)) throw Error(t(r.invalidConfigKey));
7190
- let i = r.getConfig(e), a = r.validate(i);
7191
- if (!a.isValid) throw Error(t(r.validationFailedKey, { errors: a.errors.join(", ") }));
7192
- let o = this.createQueryContext(n), s = r.build(i, o).toSQL();
7188
+ async dryRunAnalysis(e, t, n) {
7189
+ if (!n.has(e)) throw Error(S(n.invalidConfigKey));
7190
+ let r = n.getConfig(e), i = n.validate(r);
7191
+ if (!i.isValid) throw Error(S(n.validationFailedKey, { errors: i.errors.join(", ") }));
7192
+ let a = this.createQueryContext(t), o = n.build(r, a).toSQL();
7193
7193
  return {
7194
- sql: s.sql,
7195
- params: s.params
7194
+ sql: o.sql,
7195
+ params: o.params
7196
7196
  };
7197
7197
  }
7198
7198
  async explainQuery(e, t, n, r) {
@@ -7219,7 +7219,7 @@ var mi = class {
7219
7219
  funnel: () => this.executeAnalysisQueryWithCache(() => this.executeFunnelQuery(t, n, r), i),
7220
7220
  flow: () => this.executeAnalysisQueryWithCache(() => this.executeFlowQuery(t, n, r), i),
7221
7221
  retention: () => this.executeAnalysisQueryWithCache(() => this.executeRetentionQuery(t, n, r), i)
7222
- }[ue(e)]();
7222
+ }[_(e)]();
7223
7223
  }
7224
7224
  async generateSqlForMode(e, t, n, r) {
7225
7225
  return {
@@ -7228,7 +7228,7 @@ var mi = class {
7228
7228
  funnel: () => this.dryRunFunnel(t, n, r),
7229
7229
  flow: () => this.dryRunFlow(t, n, r),
7230
7230
  retention: () => this.dryRunRetention(t, n, r)
7231
- }[ue(e)]();
7231
+ }[_(e)]();
7232
7232
  }
7233
7233
  async generateComparisonSQL(e, t, n) {
7234
7234
  let r = this.buildComparisonExecutionPlan(t).periodQueries[0];
@@ -7292,7 +7292,7 @@ function bi(e, t, n) {
7292
7292
  let r = [];
7293
7293
  if (!e.joins) return r;
7294
7294
  for (let [, i] of Object.entries(e.joins)) {
7295
- let e = o(i.targetCube, t);
7295
+ let e = h(i.targetCube, t);
7296
7296
  e && r.push({
7297
7297
  targetCube: e.name,
7298
7298
  relationship: i.relationship,
@@ -7358,7 +7358,7 @@ var Ci = class {
7358
7358
  return !!this.db;
7359
7359
  }
7360
7360
  createDbExecutor() {
7361
- if (!this.db) throw Error(t("server.errors.dbNotConfigured"));
7361
+ if (!this.db) throw Error(S("server.errors.dbNotConfigured"));
7362
7362
  return bt(this.db, this.schema, this.engineType);
7363
7363
  }
7364
7364
  createQueryExecutor(e = !1) {
@@ -7367,38 +7367,38 @@ var Ci = class {
7367
7367
  formatSqlResult(e) {
7368
7368
  let t = this.getEngineType() ?? "postgres";
7369
7369
  return {
7370
- sql: y(e.sql, t),
7370
+ sql: de(e.sql, t),
7371
7371
  params: e.params
7372
7372
  };
7373
7373
  }
7374
7374
  registerCube(e) {
7375
7375
  this.prepareCube(e, this.baseCubes), this.baseCubes.set(e.name, e), this.baseGeneration++, this.rebuildAllMergedSets(), this.metadataCache.clear();
7376
7376
  }
7377
- registerCubeSet(e, n) {
7378
- if (e === "") throw Error(t("server.errors.cubeSetIdEmpty"));
7379
- let r = Date.now(), i = /* @__PURE__ */ new Map();
7380
- for (let e of n) {
7377
+ registerCubeSet(e, t) {
7378
+ if (e === "") throw Error(S("server.errors.cubeSetIdEmpty"));
7379
+ let n = Date.now(), r = /* @__PURE__ */ new Map();
7380
+ for (let e of t) {
7381
7381
  let t = new Map(this.baseCubes);
7382
- for (let [e, n] of i) t.set(e, n);
7383
- this.prepareCube(e, t), i.set(e.name, e);
7382
+ for (let [e, n] of r) t.set(e, n);
7383
+ this.prepareCube(e, t), r.set(e.name, e);
7384
7384
  }
7385
- let a = ++this.registrationCounter, o = this.mergeWithBase(i), s = Date.now() - r;
7385
+ let i = ++this.registrationCounter, a = this.mergeWithBase(r), o = Date.now() - n;
7386
7386
  this.cubeSets.set(e, {
7387
- overlay: i,
7388
- merged: o,
7389
- generation: a,
7390
- durationMs: s
7387
+ overlay: r,
7388
+ merged: a,
7389
+ generation: i,
7390
+ durationMs: o
7391
7391
  }), this.metadataCache.delete(e);
7392
- let c = 0;
7393
- for (let e of i.values()) c += Object.keys(e.dimensions ?? {}).length;
7394
- let l = {
7392
+ let s = 0;
7393
+ for (let e of r.values()) s += Object.keys(e.dimensions ?? {}).length;
7394
+ let c = {
7395
7395
  setId: e,
7396
- cubeCount: o.size,
7397
- dimensionCount: c,
7398
- generation: a,
7399
- durationMs: s
7396
+ cubeCount: a.size,
7397
+ dimensionCount: s,
7398
+ generation: i,
7399
+ durationMs: o
7400
7400
  };
7401
- Si(`registered cube set '${e}': ${i.size} cube(s), ${c} dimension(s), generation ${a}, ${s}ms`), this.onCubeSetRegistered?.(l);
7401
+ Si(`registered cube set '${e}': ${r.size} cube(s), ${s} dimension(s), generation ${i}, ${o}ms`), this.onCubeSetRegistered?.(c);
7402
7402
  }
7403
7403
  unregisterCubeSet(e) {
7404
7404
  let t = this.cubeSets.delete(e);
@@ -7436,14 +7436,14 @@ var Ci = class {
7436
7436
  }
7437
7437
  resolveSetId(e) {
7438
7438
  if (!this.contextToCubeSetId) return "";
7439
- let n = this.contextToCubeSetId(e);
7440
- if (n == null || n === "") return "";
7441
- let r = String(n);
7442
- if (!this.cubeSets.has(r)) {
7443
- if (this.missingCubeSet === "throw") throw Error(t("server.errors.cubeSetNotFound", { setId: r }));
7439
+ let t = this.contextToCubeSetId(e);
7440
+ if (t == null || t === "") return "";
7441
+ let n = String(t);
7442
+ if (!this.cubeSets.has(n)) {
7443
+ if (this.missingCubeSet === "throw") throw Error(S("server.errors.cubeSetNotFound", { setId: n }));
7444
7444
  return "";
7445
7445
  }
7446
- return r;
7446
+ return n;
7447
7447
  }
7448
7448
  resolveCubes(e) {
7449
7449
  let t = this.resolveSetId(e);
@@ -7458,59 +7458,59 @@ var Ci = class {
7458
7458
  for (let t of this.unresolvedJoinRefs(this.baseCubes)) e.add(t);
7459
7459
  for (let t of this.cubeSets.values()) for (let n of this.unresolvedJoinRefs(t.merged)) e.add(n);
7460
7460
  if (e.size > 0) {
7461
- let n = Array.from(e, (e) => ` - ${e}`).join("\n");
7462
- throw Error(t("server.errors.unresolvedCubeRefs", { details: n }));
7461
+ let t = Array.from(e, (e) => ` - ${e}`).join("\n");
7462
+ throw Error(S("server.errors.unresolvedCubeRefs", { details: t }));
7463
7463
  }
7464
7464
  }
7465
7465
  *unresolvedJoinRefs(e) {
7466
- for (let [n, r] of e) if (r.joins) for (let [i, a] of Object.entries(r.joins)) {
7467
- let { targetCube: r } = a;
7468
- typeof r == "string" && !e.has(r) && (yield t("server.errors.cubeRefUnresolved", {
7469
- cubeName: n,
7470
- joinName: i,
7471
- targetCube: r
7466
+ for (let [t, n] of e) if (n.joins) for (let [r, i] of Object.entries(n.joins)) {
7467
+ let { targetCube: n } = i;
7468
+ typeof n == "string" && !e.has(n) && (yield S("server.errors.cubeRefUnresolved", {
7469
+ cubeName: t,
7470
+ joinName: r,
7471
+ targetCube: n
7472
7472
  }));
7473
7473
  }
7474
7474
  }
7475
- validateCalculatedMeasures(e, n) {
7476
- let r = [];
7477
- for (let [i, a] of Object.entries(e.measures)) if (a.type === "calculated") {
7478
- if (!a.calculatedSql) {
7479
- r.push(t("server.validation.calculatedMeasure.mustHaveCalculatedSql", {
7475
+ validateCalculatedMeasures(e, t) {
7476
+ let n = [];
7477
+ for (let [r, i] of Object.entries(e.measures)) if (i.type === "calculated") {
7478
+ if (!i.calculatedSql) {
7479
+ n.push(S("server.validation.calculatedMeasure.mustHaveCalculatedSql", {
7480
7480
  cubeName: e.name,
7481
- fieldName: i
7481
+ fieldName: r
7482
7482
  }));
7483
7483
  continue;
7484
7484
  }
7485
- let o = pn(a.calculatedSql);
7486
- if (!o.isValid) {
7487
- r.push(t("server.validation.calculatedMeasure.invalidSyntax", {
7485
+ let a = pn(i.calculatedSql);
7486
+ if (!a.isValid) {
7487
+ n.push(S("server.validation.calculatedMeasure.invalidSyntax", {
7488
7488
  cubeName: e.name,
7489
- fieldName: i,
7490
- errors: o.errors.join(", ")
7489
+ fieldName: r,
7490
+ errors: a.errors.join(", ")
7491
7491
  }));
7492
7492
  continue;
7493
7493
  }
7494
- let s = new Map(n);
7495
- s.set(e.name, e);
7496
- let c = new H(s);
7494
+ let o = new Map(t);
7495
+ o.set(e.name, e);
7496
+ let s = new H(o);
7497
7497
  try {
7498
- c.validateDependencies(e);
7498
+ s.validateDependencies(e);
7499
7499
  } catch (e) {
7500
- r.push(e instanceof Error ? e.message : String(e));
7500
+ n.push(e instanceof Error ? e.message : String(e));
7501
7501
  }
7502
7502
  }
7503
- if (r.length === 0) {
7504
- let i = new Map(n);
7505
- i.set(e.name, e);
7506
- let a = new H(i);
7507
- a.buildGraph(e);
7508
- let o = a.detectCycle();
7509
- o && r.push(t("server.validation.calculatedMeasure.circularDependency", { cycle: o.join(" -> ") }));
7510
- }
7511
- if (r.length > 0) throw Error(t("server.errors.calculatedMeasureValidation", {
7503
+ if (n.length === 0) {
7504
+ let r = new Map(t);
7505
+ r.set(e.name, e);
7506
+ let i = new H(r);
7507
+ i.buildGraph(e);
7508
+ let a = i.detectCycle();
7509
+ a && n.push(S("server.validation.calculatedMeasure.circularDependency", { cycle: a.join(" -> ") }));
7510
+ }
7511
+ if (n.length > 0) throw Error(S("server.errors.calculatedMeasureValidation", {
7512
7512
  cubeName: e.name,
7513
- details: r.join("\n")
7513
+ details: n.join("\n")
7514
7514
  }));
7515
7515
  }
7516
7516
  getCube(e, t) {
@@ -7532,9 +7532,9 @@ var Ci = class {
7532
7532
  async executeMultiCubeQuery(e, t, n) {
7533
7533
  return this.execute(e, t, n);
7534
7534
  }
7535
- async executeQuery(e, n, r) {
7536
- if (!this.resolveCubes(r).get(e)) throw Error(t("server.errors.cubeNotFound", { cubeName: e }));
7537
- return this.execute(n, r);
7535
+ async executeQuery(e, t, n) {
7536
+ if (!this.resolveCubes(n).get(e)) throw Error(S("server.errors.cubeNotFound", { cubeName: e }));
7537
+ return this.execute(t, n);
7538
7538
  }
7539
7539
  getMetadata(e) {
7540
7540
  let t = this.resolveSetId(e), n = this.metadataCache.get(t);
@@ -7567,11 +7567,11 @@ var Ci = class {
7567
7567
  meta: e.meta
7568
7568
  };
7569
7569
  }
7570
- async generateSQL(e, n, r) {
7571
- let i = this.getCube(e, r);
7572
- if (!i) throw Error(t("server.errors.cubeNotFound", { cubeName: e }));
7573
- let a = await this.createQueryExecutor().generateSQL(i, n, r);
7574
- return this.formatSqlResult(a);
7570
+ async generateSQL(e, t, n) {
7571
+ let r = this.getCube(e, n);
7572
+ if (!r) throw Error(S("server.errors.cubeNotFound", { cubeName: e }));
7573
+ let i = await this.createQueryExecutor().generateSQL(r, t, n);
7574
+ return this.formatSqlResult(i);
7575
7575
  }
7576
7576
  async generateMultiCubeSQL(e, t) {
7577
7577
  let n = await this.createQueryExecutor().generateMultiCubeSQL(this.resolveCubes(t), e, t);
@@ -7616,7 +7616,7 @@ var Ci = class {
7616
7616
  return Array.from(this.resolveCubes(e).keys());
7617
7617
  }
7618
7618
  validateQuery(e, t) {
7619
- return le(this.resolveCubes(t), e);
7619
+ return r(this.resolveCubes(t), e);
7620
7620
  }
7621
7621
  analyzeQuery(e, t) {
7622
7622
  return this.createQueryExecutor(!0).analyzeQuery(this.resolveCubes(t), e, t);