drizzle-cube 0.4.34 → 0.4.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.d.ts +7 -1
- package/dist/adapters/express/index.js +5 -4
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.d.ts +7 -1
- package/dist/adapters/fastify/index.js +5 -4
- package/dist/adapters/{handler-ClgB__a-.cjs → handler-DzUX7CBs.cjs} +1 -1
- package/dist/adapters/{handler-rPpxuopb.js → handler-J55KQKe5.js} +1 -1
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.d.ts +7 -1
- package/dist/adapters/hono/index.js +5 -4
- package/dist/adapters/{mcp-transport-DPpei63d.cjs → mcp-transport-CjA5_6G_.cjs} +2 -2
- package/dist/adapters/{mcp-transport-DWSNkwUY.js → mcp-transport-x_A7Q5OL.js} +35 -20
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.d.ts +7 -1
- package/dist/adapters/nextjs/index.js +9 -8
- package/dist/adapters/{utils-BLFzzCI9.cjs → utils-CDExg9uP.cjs} +1 -1
- package/dist/adapters/{utils-B7VkyzMv.js → utils-DkKcpkx5.js} +1 -5
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts.js +3 -3
- package/dist/client/chunks/{DashboardEditModal-DenRJiYr.js → DashboardEditModal-kWEk4KJC.js} +8 -8
- package/dist/client/chunks/{DashboardEditModal-DenRJiYr.js.map → DashboardEditModal-kWEk4KJC.js.map} +1 -1
- package/dist/client/chunks/{FieldSearchModal-BQS1v1up.js → FieldSearchModal-rB26lhBD.js} +3 -3
- package/dist/client/chunks/{FieldSearchModal-BQS1v1up.js.map → FieldSearchModal-rB26lhBD.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-DG38V1gO.js → analysis-builder-CdDPUAEU.js} +8 -8
- package/dist/client/chunks/{analysis-builder-DG38V1gO.js.map → analysis-builder-CdDPUAEU.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-DaFu78dk.js → analysis-builder-shared-3V70XUNW.js} +15 -19
- package/dist/client/chunks/{analysis-builder-shared-DaFu78dk.js.map → analysis-builder-shared-3V70XUNW.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-B2m_6EZe.js → chart-data-table-BlkFWPhF.js} +602 -581
- package/dist/client/chunks/chart-data-table-BlkFWPhF.js.map +1 -0
- package/dist/client/chunks/{chart-kpi-delta-S6qDEoJO.js → chart-kpi-delta-CUIjCDS3.js} +2 -2
- package/dist/client/chunks/{chart-kpi-delta-S6qDEoJO.js.map → chart-kpi-delta-CUIjCDS3.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-CEUBsVW2.js → chart-kpi-number-CxlpSKYh.js} +3 -3
- package/dist/client/chunks/{chart-kpi-number-CEUBsVW2.js.map → chart-kpi-number-CxlpSKYh.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-DgRig_jQ.js → chart-kpi-text-C16fwohp.js} +2 -2
- package/dist/client/chunks/{chart-kpi-text-DgRig_jQ.js.map → chart-kpi-text-C16fwohp.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-DXxc43w1.js → chart-markdown-B2X4IwLO.js} +1132 -1119
- package/dist/client/chunks/chart-markdown-B2X4IwLO.js.map +1 -0
- package/dist/client/chunks/{charts-loader-BI07yxaQ.js → charts-loader-BFhQWB_d.js} +6 -6
- package/dist/client/chunks/{charts-loader-BI07yxaQ.js.map → charts-loader-BFhQWB_d.js.map} +1 -1
- package/dist/client/chunks/{core-D1TOj17W.js → core-DJrniqct.js} +2 -6
- package/dist/client/chunks/{core-D1TOj17W.js.map → core-DJrniqct.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-DPL5_Tkh.js → schema-visualization-qmLI8MGQ.js} +13 -14
- package/dist/client/chunks/{schema-visualization-DPL5_Tkh.js.map → schema-visualization-qmLI8MGQ.js.map} +1 -1
- package/dist/client/chunks/{syntaxHighlighting-87bOwTxj.js → syntaxHighlighting-BLl0ch4A.js} +2 -2
- package/dist/client/chunks/{syntaxHighlighting-87bOwTxj.js.map → syntaxHighlighting-BLl0ch4A.js.map} +1 -1
- package/dist/client/chunks/{useDebounce-DkuM7nQk.js → useDebounce-xfPFr2fi.js} +2 -2
- package/dist/client/chunks/{useDebounce-DkuM7nQk.js.map → useDebounce-xfPFr2fi.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-RflLTDVL.js → useExplainAI-6COjssus.js} +4 -4
- package/dist/client/chunks/{useExplainAI-RflLTDVL.js.map → useExplainAI-6COjssus.js.map} +1 -1
- package/dist/client/chunks/{utils--32ZtfbZ.js → utils-nCeVL-Hm.js} +2 -2
- package/dist/client/chunks/{utils--32ZtfbZ.js.map → utils-nCeVL-Hm.js.map} +1 -1
- package/dist/client/chunks/{vendor-CZX7UVzM.js → vendor-WzXX36hd.js} +3 -3
- package/dist/client/chunks/{vendor-CZX7UVzM.js.map → vendor-WzXX36hd.js.map} +1 -1
- package/dist/client/components.js +3 -3
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +12 -12
- package/dist/client/providers.js +1 -1
- package/dist/client/utils.js +4 -4
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/index.cjs +2 -2
- package/dist/server/index.d.ts +47 -5
- package/dist/server/index.js +34 -19
- package/package.json +3 -3
- package/dist/client/chunks/chart-data-table-B2m_6EZe.js.map +0 -1
- package/dist/client/chunks/chart-markdown-DXxc43w1.js.map +0 -1
|
@@ -12,4 +12,4 @@ If possible, please select a more specific dialect (like sqlite, postgresql, etc
|
|
|
12
12
|
`),a.map(function(e){return this.buildFirstStateStack(e,[])||[e]},this).forEach(function(e){var t=e[0],r=t.rule.symbols[t.dot],i=this.getSymbolDisplay(r);n.push(`A `+i+` based on:`),this.displayStateStack(e,n)},this)),n.push(``),n.join(`
|
|
13
13
|
`)},a.prototype.displayStateStack=function(e,t){for(var n,r=0,i=0;i<e.length;i++){var a=e[i],o=a.rule.toString(a.dot);o===n?r++:(r>0&&t.push(` ^ `+r+` more lines identical to this`),r=0,t.push(` `+o)),n=o}},a.prototype.getSymbolDisplay=function(e){return o(e)},a.prototype.buildFirstStateStack=function(e,t){if(t.indexOf(e)!==-1)return null;if(e.wantedBy.length===0)return[e];var n=e.wantedBy[0],r=[e].concat(t),i=this.buildFirstStateStack(n,r);return i===null?null:[e].concat(i)},a.prototype.save=function(){var e=this.table[this.current];return e.lexerState=this.lexerState,e},a.prototype.restore=function(e){var t=e.index;this.current=t,this.table[t]=e,this.table.splice(t+1),this.lexerState=e.lexerState,this.results=this.finish()},a.prototype.rewind=function(e){if(!this.options.keepHistory)throw Error("set option `keepHistory` to enable rewinding");this.restore(this.table[e])},a.prototype.finish=function(){var e=[],t=this.grammar.start;return this.table[this.table.length-1].states.forEach(function(n){n.rule.name===t&&n.dot===n.rule.symbols.length&&n.reference===0&&n.data!==a.fail&&e.push(n)}),e.map(function(e){return e.data})};function o(e){var t=typeof e;if(t===`string`)return e;if(t===`object`){if(e.literal)return JSON.stringify(e.literal);if(e instanceof RegExp)return`character matching `+e;if(e.type)return e.type+` token`;if(e.test)return`token matching `+String(e.test);throw Error(`Unknown symbol type: `+e)}}function s(e){var t=typeof e;if(t===`string`)return e;if(t===`object`){if(e.literal)return JSON.stringify(e.literal);if(e instanceof RegExp)return e.toString();if(e.type)return`%`+e.type;if(e.test)return`<`+String(e.test)+`>`;throw Error(`Unknown symbol type: `+e)}}return{Parser:a,Grammar:r,Rule:e}})}));function fa(e){return e.map(pa).map(ma).map(ha).map(ga).map(_a)}var pa=(e,t,n)=>{if(ae(e.type)){let r=va(n,t);if(r&&r.type===_.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:_.IDENTIFIER,text:e.raw});let i=F(n,t);if(i&&i.type===_.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:_.IDENTIFIER,text:e.raw})}return e},ma=(e,t,n)=>{if(e.type===_.RESERVED_FUNCTION_NAME){let r=F(n,t);if(!r||!ya(r))return Object.assign(Object.assign({},e),{type:_.IDENTIFIER,text:e.raw})}return e},ha=(e,t,n)=>{if(e.type===_.RESERVED_DATA_TYPE){let r=F(n,t);if(r&&ya(r))return Object.assign(Object.assign({},e),{type:_.RESERVED_PARAMETERIZED_DATA_TYPE})}return e},ga=(e,t,n)=>{if(e.type===_.IDENTIFIER){let r=F(n,t);if(r&&ba(r))return Object.assign(Object.assign({},e),{type:_.ARRAY_IDENTIFIER})}return e},_a=(e,t,n)=>{if(e.type===_.RESERVED_DATA_TYPE){let r=F(n,t);if(r&&ba(r))return Object.assign(Object.assign({},e),{type:_.ARRAY_KEYWORD})}return e},va=(e,t)=>F(e,t,-1),F=(e,t,n=1)=>{let r=1;for(;e[t+r*n]&&xa(e[t+r*n]);)r++;return e[t+r*n]},ya=e=>e.type===_.OPEN_PAREN&&e.text===`(`,ba=e=>e.type===_.OPEN_PAREN&&e.text===`[`,xa=e=>e.type===_.BLOCK_COMMENT||e.type===_.LINE_COMMENT,Sa=class{constructor(e){this.tokenize=e,this.index=0,this.tokens=[],this.input=``}reset(e,t){this.input=e,this.index=0,this.tokens=this.tokenize(e)}next(){return this.tokens[this.index++]}save(){}formatError(e){let{line:t,col:n}=Qi(this.input,e.start);return`Parse error at token: ${e.text} at line ${t} column ${n}`}has(e){return e in _}},I;(function(e){e.statement=`statement`,e.clause=`clause`,e.set_operation=`set_operation`,e.function_call=`function_call`,e.parameterized_data_type=`parameterized_data_type`,e.array_subscript=`array_subscript`,e.property_access=`property_access`,e.parenthesis=`parenthesis`,e.between_predicate=`between_predicate`,e.case_expression=`case_expression`,e.case_when=`case_when`,e.case_else=`case_else`,e.limit_clause=`limit_clause`,e.all_columns_asterisk=`all_columns_asterisk`,e.literal=`literal`,e.identifier=`identifier`,e.keyword=`keyword`,e.data_type=`data_type`,e.parameter=`parameter`,e.operator=`operator`,e.comma=`comma`,e.line_comment=`line_comment`,e.block_comment=`block_comment`,e.disable_comment=`disable_comment`})(I=I||={});function L(e){return e[0]}var R=new Sa(e=>[]),z=([[e]])=>e,B=e=>({type:I.keyword,tokenType:e.type,text:e.text,raw:e.raw}),Ca=e=>({type:I.data_type,text:e.text,raw:e.raw}),V=(e,{leading:t,trailing:n})=>(t?.length&&(e=Object.assign(Object.assign({},e),{leadingComments:t})),n?.length&&(e=Object.assign(Object.assign({},e),{trailingComments:n})),e),wa=(e,{leading:t,trailing:n})=>{if(t?.length){let[n,...r]=e;e=[V(n,{leading:t}),...r]}if(n?.length){let t=e.slice(0,-1),r=e[e.length-1];e=[...t,V(r,{trailing:n})]}return e},Ta={Lexer:R,ParserRules:[{name:`main$ebnf$1`,symbols:[]},{name:`main$ebnf$1`,symbols:[`main$ebnf$1`,`statement`],postprocess:e=>e[0].concat([e[1]])},{name:`main`,symbols:[`main$ebnf$1`],postprocess:([e])=>{let t=e[e.length-1];return t&&!t.hasSemicolon?t.children.length>0?e:e.slice(0,-1):e}},{name:`statement$subexpression$1`,symbols:[R.has(`DELIMITER`)?{type:`DELIMITER`}:DELIMITER]},{name:`statement$subexpression$1`,symbols:[R.has(`EOF`)?{type:`EOF`}:EOF]},{name:`statement`,symbols:[`expressions_or_clauses`,`statement$subexpression$1`],postprocess:([e,[t]])=>({type:I.statement,children:e,hasSemicolon:t.type===_.DELIMITER})},{name:`expressions_or_clauses$ebnf$1`,symbols:[]},{name:`expressions_or_clauses$ebnf$1`,symbols:[`expressions_or_clauses$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`expressions_or_clauses$ebnf$2`,symbols:[]},{name:`expressions_or_clauses$ebnf$2`,symbols:[`expressions_or_clauses$ebnf$2`,`clause`],postprocess:e=>e[0].concat([e[1]])},{name:`expressions_or_clauses`,symbols:[`expressions_or_clauses$ebnf$1`,`expressions_or_clauses$ebnf$2`],postprocess:([e,t])=>[...e,...t]},{name:`clause$subexpression$1`,symbols:[`limit_clause`]},{name:`clause$subexpression$1`,symbols:[`select_clause`]},{name:`clause$subexpression$1`,symbols:[`other_clause`]},{name:`clause$subexpression$1`,symbols:[`set_operation`]},{name:`clause`,symbols:[`clause$subexpression$1`],postprocess:z},{name:`limit_clause$ebnf$1$subexpression$1$ebnf$1`,symbols:[`free_form_sql`]},{name:`limit_clause$ebnf$1$subexpression$1$ebnf$1`,symbols:[`limit_clause$ebnf$1$subexpression$1$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`limit_clause$ebnf$1$subexpression$1`,symbols:[R.has(`COMMA`)?{type:`COMMA`}:COMMA,`limit_clause$ebnf$1$subexpression$1$ebnf$1`]},{name:`limit_clause$ebnf$1`,symbols:[`limit_clause$ebnf$1$subexpression$1`],postprocess:L},{name:`limit_clause$ebnf$1`,symbols:[],postprocess:()=>null},{name:`limit_clause`,symbols:[R.has(`LIMIT`)?{type:`LIMIT`}:LIMIT,`_`,`expression_chain_`,`limit_clause$ebnf$1`],postprocess:([e,t,n,r])=>{if(r){let[i,a]=r;return{type:I.limit_clause,limitKw:V(B(e),{trailing:t}),offset:n,count:a}}else return{type:I.limit_clause,limitKw:V(B(e),{trailing:t}),count:n}}},{name:`select_clause$subexpression$1$ebnf$1`,symbols:[]},{name:`select_clause$subexpression$1$ebnf$1`,symbols:[`select_clause$subexpression$1$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`select_clause$subexpression$1`,symbols:[`all_columns_asterisk`,`select_clause$subexpression$1$ebnf$1`]},{name:`select_clause$subexpression$1$ebnf$2`,symbols:[]},{name:`select_clause$subexpression$1$ebnf$2`,symbols:[`select_clause$subexpression$1$ebnf$2`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`select_clause$subexpression$1`,symbols:[`asteriskless_free_form_sql`,`select_clause$subexpression$1$ebnf$2`]},{name:`select_clause`,symbols:[R.has(`RESERVED_SELECT`)?{type:`RESERVED_SELECT`}:RESERVED_SELECT,`select_clause$subexpression$1`],postprocess:([e,[t,n]])=>({type:I.clause,nameKw:B(e),children:[t,...n]})},{name:`select_clause`,symbols:[R.has(`RESERVED_SELECT`)?{type:`RESERVED_SELECT`}:RESERVED_SELECT],postprocess:([e])=>({type:I.clause,nameKw:B(e),children:[]})},{name:`all_columns_asterisk`,symbols:[R.has(`ASTERISK`)?{type:`ASTERISK`}:ASTERISK],postprocess:()=>({type:I.all_columns_asterisk})},{name:`other_clause$ebnf$1`,symbols:[]},{name:`other_clause$ebnf$1`,symbols:[`other_clause$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`other_clause`,symbols:[R.has(`RESERVED_CLAUSE`)?{type:`RESERVED_CLAUSE`}:RESERVED_CLAUSE,`other_clause$ebnf$1`],postprocess:([e,t])=>({type:I.clause,nameKw:B(e),children:t})},{name:`set_operation$ebnf$1`,symbols:[]},{name:`set_operation$ebnf$1`,symbols:[`set_operation$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`set_operation`,symbols:[R.has(`RESERVED_SET_OPERATION`)?{type:`RESERVED_SET_OPERATION`}:RESERVED_SET_OPERATION,`set_operation$ebnf$1`],postprocess:([e,t])=>({type:I.set_operation,nameKw:B(e),children:t})},{name:`expression_chain_$ebnf$1`,symbols:[`expression_with_comments_`]},{name:`expression_chain_$ebnf$1`,symbols:[`expression_chain_$ebnf$1`,`expression_with_comments_`],postprocess:e=>e[0].concat([e[1]])},{name:`expression_chain_`,symbols:[`expression_chain_$ebnf$1`],postprocess:L},{name:`expression_chain$ebnf$1`,symbols:[]},{name:`expression_chain$ebnf$1`,symbols:[`expression_chain$ebnf$1`,`_expression_with_comments`],postprocess:e=>e[0].concat([e[1]])},{name:`expression_chain`,symbols:[`expression`,`expression_chain$ebnf$1`],postprocess:([e,t])=>[e,...t]},{name:`andless_expression_chain$ebnf$1`,symbols:[]},{name:`andless_expression_chain$ebnf$1`,symbols:[`andless_expression_chain$ebnf$1`,`_andless_expression_with_comments`],postprocess:e=>e[0].concat([e[1]])},{name:`andless_expression_chain`,symbols:[`andless_expression`,`andless_expression_chain$ebnf$1`],postprocess:([e,t])=>[e,...t]},{name:`expression_with_comments_`,symbols:[`expression`,`_`],postprocess:([e,t])=>V(e,{trailing:t})},{name:`_expression_with_comments`,symbols:[`_`,`expression`],postprocess:([e,t])=>V(t,{leading:e})},{name:`_andless_expression_with_comments`,symbols:[`_`,`andless_expression`],postprocess:([e,t])=>V(t,{leading:e})},{name:`free_form_sql$subexpression$1`,symbols:[`asteriskless_free_form_sql`]},{name:`free_form_sql$subexpression$1`,symbols:[`asterisk`]},{name:`free_form_sql`,symbols:[`free_form_sql$subexpression$1`],postprocess:z},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`asteriskless_andless_expression`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`logic_operator`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`comma`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`comment`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`other_keyword`]},{name:`asteriskless_free_form_sql`,symbols:[`asteriskless_free_form_sql$subexpression$1`],postprocess:z},{name:`expression$subexpression$1`,symbols:[`andless_expression`]},{name:`expression$subexpression$1`,symbols:[`logic_operator`]},{name:`expression`,symbols:[`expression$subexpression$1`],postprocess:z},{name:`andless_expression$subexpression$1`,symbols:[`asteriskless_andless_expression`]},{name:`andless_expression$subexpression$1`,symbols:[`asterisk`]},{name:`andless_expression`,symbols:[`andless_expression$subexpression$1`],postprocess:z},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`atomic_expression`]},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`between_predicate`]},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`case_expression`]},{name:`asteriskless_andless_expression`,symbols:[`asteriskless_andless_expression$subexpression$1`],postprocess:z},{name:`atomic_expression$subexpression$1`,symbols:[`array_subscript`]},{name:`atomic_expression$subexpression$1`,symbols:[`function_call`]},{name:`atomic_expression$subexpression$1`,symbols:[`property_access`]},{name:`atomic_expression$subexpression$1`,symbols:[`parenthesis`]},{name:`atomic_expression$subexpression$1`,symbols:[`curly_braces`]},{name:`atomic_expression$subexpression$1`,symbols:[`square_brackets`]},{name:`atomic_expression$subexpression$1`,symbols:[`operator`]},{name:`atomic_expression$subexpression$1`,symbols:[`identifier`]},{name:`atomic_expression$subexpression$1`,symbols:[`parameter`]},{name:`atomic_expression$subexpression$1`,symbols:[`literal`]},{name:`atomic_expression$subexpression$1`,symbols:[`data_type`]},{name:`atomic_expression$subexpression$1`,symbols:[`keyword`]},{name:`atomic_expression`,symbols:[`atomic_expression$subexpression$1`],postprocess:z},{name:`array_subscript`,symbols:[R.has(`ARRAY_IDENTIFIER`)?{type:`ARRAY_IDENTIFIER`}:ARRAY_IDENTIFIER,`_`,`square_brackets`],postprocess:([e,t,n])=>({type:I.array_subscript,array:V({type:I.identifier,quoted:!1,text:e.text},{trailing:t}),parenthesis:n})},{name:`array_subscript`,symbols:[R.has(`ARRAY_KEYWORD`)?{type:`ARRAY_KEYWORD`}:ARRAY_KEYWORD,`_`,`square_brackets`],postprocess:([e,t,n])=>({type:I.array_subscript,array:V(B(e),{trailing:t}),parenthesis:n})},{name:`function_call`,symbols:[R.has(`RESERVED_FUNCTION_NAME`)?{type:`RESERVED_FUNCTION_NAME`}:RESERVED_FUNCTION_NAME,`_`,`parenthesis`],postprocess:([e,t,n])=>({type:I.function_call,nameKw:V(B(e),{trailing:t}),parenthesis:n})},{name:`parenthesis`,symbols:[{literal:`(`},`expressions_or_clauses`,{literal:`)`}],postprocess:([e,t,n])=>({type:I.parenthesis,children:t,openParen:`(`,closeParen:`)`})},{name:`curly_braces$ebnf$1`,symbols:[]},{name:`curly_braces$ebnf$1`,symbols:[`curly_braces$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`curly_braces`,symbols:[{literal:`{`},`curly_braces$ebnf$1`,{literal:`}`}],postprocess:([e,t,n])=>({type:I.parenthesis,children:t,openParen:`{`,closeParen:`}`})},{name:`square_brackets$ebnf$1`,symbols:[]},{name:`square_brackets$ebnf$1`,symbols:[`square_brackets$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`square_brackets`,symbols:[{literal:`[`},`square_brackets$ebnf$1`,{literal:`]`}],postprocess:([e,t,n])=>({type:I.parenthesis,children:t,openParen:`[`,closeParen:`]`})},{name:`property_access$subexpression$1`,symbols:[`identifier`]},{name:`property_access$subexpression$1`,symbols:[`array_subscript`]},{name:`property_access$subexpression$1`,symbols:[`all_columns_asterisk`]},{name:`property_access$subexpression$1`,symbols:[`parameter`]},{name:`property_access`,symbols:[`atomic_expression`,`_`,R.has(`PROPERTY_ACCESS_OPERATOR`)?{type:`PROPERTY_ACCESS_OPERATOR`}:PROPERTY_ACCESS_OPERATOR,`_`,`property_access$subexpression$1`],postprocess:([e,t,n,r,[i]])=>({type:I.property_access,object:V(e,{trailing:t}),operator:n.text,property:V(i,{leading:r})})},{name:`between_predicate`,symbols:[R.has(`BETWEEN`)?{type:`BETWEEN`}:BETWEEN,`_`,`andless_expression_chain`,`_`,R.has(`AND`)?{type:`AND`}:AND,`_`,`andless_expression`],postprocess:([e,t,n,r,i,a,o])=>({type:I.between_predicate,betweenKw:B(e),expr1:wa(n,{leading:t,trailing:r}),andKw:B(i),expr2:[V(o,{leading:a})]})},{name:`case_expression$ebnf$1`,symbols:[`expression_chain_`],postprocess:L},{name:`case_expression$ebnf$1`,symbols:[],postprocess:()=>null},{name:`case_expression$ebnf$2`,symbols:[]},{name:`case_expression$ebnf$2`,symbols:[`case_expression$ebnf$2`,`case_clause`],postprocess:e=>e[0].concat([e[1]])},{name:`case_expression`,symbols:[R.has(`CASE`)?{type:`CASE`}:CASE,`_`,`case_expression$ebnf$1`,`case_expression$ebnf$2`,R.has(`END`)?{type:`END`}:END],postprocess:([e,t,n,r,i])=>({type:I.case_expression,caseKw:V(B(e),{trailing:t}),endKw:B(i),expr:n||[],clauses:r})},{name:`case_clause`,symbols:[R.has(`WHEN`)?{type:`WHEN`}:WHEN,`_`,`expression_chain_`,R.has(`THEN`)?{type:`THEN`}:THEN,`_`,`expression_chain_`],postprocess:([e,t,n,r,i,a])=>({type:I.case_when,whenKw:V(B(e),{trailing:t}),thenKw:V(B(r),{trailing:i}),condition:n,result:a})},{name:`case_clause`,symbols:[R.has(`ELSE`)?{type:`ELSE`}:ELSE,`_`,`expression_chain_`],postprocess:([e,t,n])=>({type:I.case_else,elseKw:V(B(e),{trailing:t}),result:n})},{name:`comma$subexpression$1`,symbols:[R.has(`COMMA`)?{type:`COMMA`}:COMMA]},{name:`comma`,symbols:[`comma$subexpression$1`],postprocess:([[e]])=>({type:I.comma})},{name:`asterisk$subexpression$1`,symbols:[R.has(`ASTERISK`)?{type:`ASTERISK`}:ASTERISK]},{name:`asterisk`,symbols:[`asterisk$subexpression$1`],postprocess:([[e]])=>({type:I.operator,text:e.text})},{name:`operator$subexpression$1`,symbols:[R.has(`OPERATOR`)?{type:`OPERATOR`}:OPERATOR]},{name:`operator`,symbols:[`operator$subexpression$1`],postprocess:([[e]])=>({type:I.operator,text:e.text})},{name:`identifier$subexpression$1`,symbols:[R.has(`IDENTIFIER`)?{type:`IDENTIFIER`}:IDENTIFIER]},{name:`identifier$subexpression$1`,symbols:[R.has(`QUOTED_IDENTIFIER`)?{type:`QUOTED_IDENTIFIER`}:QUOTED_IDENTIFIER]},{name:`identifier$subexpression$1`,symbols:[R.has(`VARIABLE`)?{type:`VARIABLE`}:VARIABLE]},{name:`identifier`,symbols:[`identifier$subexpression$1`],postprocess:([[e]])=>({type:I.identifier,quoted:e.type!==`IDENTIFIER`,text:e.text})},{name:`parameter$subexpression$1`,symbols:[R.has(`NAMED_PARAMETER`)?{type:`NAMED_PARAMETER`}:NAMED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`QUOTED_PARAMETER`)?{type:`QUOTED_PARAMETER`}:QUOTED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`NUMBERED_PARAMETER`)?{type:`NUMBERED_PARAMETER`}:NUMBERED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`POSITIONAL_PARAMETER`)?{type:`POSITIONAL_PARAMETER`}:POSITIONAL_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`CUSTOM_PARAMETER`)?{type:`CUSTOM_PARAMETER`}:CUSTOM_PARAMETER]},{name:`parameter`,symbols:[`parameter$subexpression$1`],postprocess:([[e]])=>({type:I.parameter,key:e.key,text:e.text})},{name:`literal$subexpression$1`,symbols:[R.has(`NUMBER`)?{type:`NUMBER`}:NUMBER]},{name:`literal$subexpression$1`,symbols:[R.has(`STRING`)?{type:`STRING`}:STRING]},{name:`literal`,symbols:[`literal$subexpression$1`],postprocess:([[e]])=>({type:I.literal,text:e.text})},{name:`keyword$subexpression$1`,symbols:[R.has(`RESERVED_KEYWORD`)?{type:`RESERVED_KEYWORD`}:RESERVED_KEYWORD]},{name:`keyword$subexpression$1`,symbols:[R.has(`RESERVED_KEYWORD_PHRASE`)?{type:`RESERVED_KEYWORD_PHRASE`}:RESERVED_KEYWORD_PHRASE]},{name:`keyword$subexpression$1`,symbols:[R.has(`RESERVED_JOIN`)?{type:`RESERVED_JOIN`}:RESERVED_JOIN]},{name:`keyword`,symbols:[`keyword$subexpression$1`],postprocess:([[e]])=>B(e)},{name:`data_type$subexpression$1`,symbols:[R.has(`RESERVED_DATA_TYPE`)?{type:`RESERVED_DATA_TYPE`}:RESERVED_DATA_TYPE]},{name:`data_type$subexpression$1`,symbols:[R.has(`RESERVED_DATA_TYPE_PHRASE`)?{type:`RESERVED_DATA_TYPE_PHRASE`}:RESERVED_DATA_TYPE_PHRASE]},{name:`data_type`,symbols:[`data_type$subexpression$1`],postprocess:([[e]])=>Ca(e)},{name:`data_type`,symbols:[R.has(`RESERVED_PARAMETERIZED_DATA_TYPE`)?{type:`RESERVED_PARAMETERIZED_DATA_TYPE`}:RESERVED_PARAMETERIZED_DATA_TYPE,`_`,`parenthesis`],postprocess:([e,t,n])=>({type:I.parameterized_data_type,dataType:V(Ca(e),{trailing:t}),parenthesis:n})},{name:`logic_operator$subexpression$1`,symbols:[R.has(`AND`)?{type:`AND`}:AND]},{name:`logic_operator$subexpression$1`,symbols:[R.has(`OR`)?{type:`OR`}:OR]},{name:`logic_operator$subexpression$1`,symbols:[R.has(`XOR`)?{type:`XOR`}:XOR]},{name:`logic_operator`,symbols:[`logic_operator$subexpression$1`],postprocess:([[e]])=>B(e)},{name:`other_keyword$subexpression$1`,symbols:[R.has(`WHEN`)?{type:`WHEN`}:WHEN]},{name:`other_keyword$subexpression$1`,symbols:[R.has(`THEN`)?{type:`THEN`}:THEN]},{name:`other_keyword$subexpression$1`,symbols:[R.has(`ELSE`)?{type:`ELSE`}:ELSE]},{name:`other_keyword$subexpression$1`,symbols:[R.has(`END`)?{type:`END`}:END]},{name:`other_keyword`,symbols:[`other_keyword$subexpression$1`],postprocess:([[e]])=>B(e)},{name:`_$ebnf$1`,symbols:[]},{name:`_$ebnf$1`,symbols:[`_$ebnf$1`,`comment`],postprocess:e=>e[0].concat([e[1]])},{name:`_`,symbols:[`_$ebnf$1`],postprocess:([e])=>e},{name:`comment`,symbols:[R.has(`LINE_COMMENT`)?{type:`LINE_COMMENT`}:LINE_COMMENT],postprocess:([e])=>({type:I.line_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:`comment`,symbols:[R.has(`BLOCK_COMMENT`)?{type:`BLOCK_COMMENT`}:BLOCK_COMMENT],postprocess:([e])=>({type:I.block_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:`comment`,symbols:[R.has(`DISABLE_COMMENT`)?{type:`DISABLE_COMMENT`}:DISABLE_COMMENT],postprocess:([e])=>({type:I.disable_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})}],ParserStart:`main`},{Parser:Ea,Grammar:Da}=l(da(),1).default;function Oa(e){let t={},n=new Sa(n=>[...fa(e.tokenize(n,t)),ie(n.length)]),r=new Ea(Da.fromCompiled(Ta),{lexer:n});return{parse:(e,n)=>{t=n;let{results:i}=r.feed(e);if(i.length===1)return i[0];throw i.length===0?Error(`Parse error: Invalid SQL`):Error(`Parse error: Ambiguous grammar\n${JSON.stringify(i,void 0,2)}`)}}}var H;(function(e){e[e.SPACE=0]=`SPACE`,e[e.NO_SPACE=1]=`NO_SPACE`,e[e.NO_NEWLINE=2]=`NO_NEWLINE`,e[e.NEWLINE=3]=`NEWLINE`,e[e.MANDATORY_NEWLINE=4]=`MANDATORY_NEWLINE`,e[e.INDENT=5]=`INDENT`,e[e.SINGLE_INDENT=6]=`SINGLE_INDENT`})(H=H||={});var ka=class{constructor(e){this.indentation=e,this.items=[]}add(...e){for(let t of e)switch(t){case H.SPACE:this.items.push(H.SPACE);break;case H.NO_SPACE:this.trimHorizontalWhitespace();break;case H.NO_NEWLINE:this.trimWhitespace();break;case H.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(H.NEWLINE);break;case H.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(H.MANDATORY_NEWLINE);break;case H.INDENT:this.addIndentation();break;case H.SINGLE_INDENT:this.items.push(H.SINGLE_INDENT);break;default:this.items.push(t)}}trimHorizontalWhitespace(){for(;Aa(O(this.items));)this.items.pop()}trimWhitespace(){for(;ja(O(this.items));)this.items.pop()}addNewline(e){if(this.items.length>0)switch(O(this.items)){case H.NEWLINE:this.items.pop(),this.items.push(e);break;case H.MANDATORY_NEWLINE:break;default:this.items.push(e);break}}addIndentation(){for(let e=0;e<this.indentation.getLevel();e++)this.items.push(H.SINGLE_INDENT)}toString(){return this.items.map(e=>this.itemToString(e)).join(``)}getLayoutItems(){return this.items}itemToString(e){switch(e){case H.SPACE:return` `;case H.NEWLINE:case H.MANDATORY_NEWLINE:return`
|
|
14
14
|
`;case H.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return e}}},Aa=e=>e===H.SPACE||e===H.SINGLE_INDENT,ja=e=>e===H.SPACE||e===H.SINGLE_INDENT||e===H.NEWLINE;function Ma(e,t){if(t===`standard`)return e;let n=[];return e.length>=10&&e.includes(` `)&&([e,...n]=e.split(` `)),e=t===`tabularLeft`?e.padEnd(9,` `):e.padStart(9,` `),e+[``,...n].join(` `)}function Na(e){return oe(e)||e===_.RESERVED_CLAUSE||e===_.RESERVED_SELECT||e===_.RESERVED_SET_OPERATION||e===_.RESERVED_JOIN||e===_.LIMIT}var Pa=`top-level`,Fa=`block-level`,Ia=class{constructor(e){this.indent=e,this.indentTypes=[]}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(Pa)}increaseBlockLevel(){this.indentTypes.push(Fa)}decreaseTopLevel(){this.indentTypes.length>0&&O(this.indentTypes)===Pa&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===Pa;);}},La=class extends ka{constructor(e){super(new Ia(``)),this.expressionWidth=e,this.length=0,this.trailingSpace=!1}add(...e){if(e.forEach(e=>this.addToLength(e)),this.length>this.expressionWidth)throw new Ra;super.add(...e)}addToLength(e){if(typeof e==`string`)this.length+=e.length,this.trailingSpace=!1;else if(e===H.MANDATORY_NEWLINE||e===H.NEWLINE)throw new Ra;else e===H.INDENT||e===H.SINGLE_INDENT||e===H.SPACE?this.trailingSpace||=(this.length++,!0):(e===H.NO_NEWLINE||e===H.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}},Ra=class extends Error{},za=class e{constructor({cfg:e,dialectCfg:t,params:n,layout:r,inline:i=!1}){this.inline=!1,this.nodes=[],this.index=-1,this.cfg=e,this.dialectCfg=t,this.inline=i,this.params=n,this.layout=r}format(e){for(this.nodes=e,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(e){this.formatComments(e.leadingComments),this.formatNodeWithoutComments(e),this.formatComments(e.trailingComments)}formatNodeWithoutComments(e){switch(e.type){case I.function_call:return this.formatFunctionCall(e);case I.parameterized_data_type:return this.formatParameterizedDataType(e);case I.array_subscript:return this.formatArraySubscript(e);case I.property_access:return this.formatPropertyAccess(e);case I.parenthesis:return this.formatParenthesis(e);case I.between_predicate:return this.formatBetweenPredicate(e);case I.case_expression:return this.formatCaseExpression(e);case I.case_when:return this.formatCaseWhen(e);case I.case_else:return this.formatCaseElse(e);case I.clause:return this.formatClause(e);case I.set_operation:return this.formatSetOperation(e);case I.limit_clause:return this.formatLimitClause(e);case I.all_columns_asterisk:return this.formatAllColumnsAsterisk(e);case I.literal:return this.formatLiteral(e);case I.identifier:return this.formatIdentifier(e);case I.parameter:return this.formatParameter(e);case I.operator:return this.formatOperator(e);case I.comma:return this.formatComma(e);case I.line_comment:return this.formatLineComment(e);case I.block_comment:return this.formatBlockComment(e);case I.disable_comment:return this.formatBlockComment(e);case I.data_type:return this.formatDataType(e);case I.keyword:return this.formatKeywordNode(e)}}formatFunctionCall(e){this.withComments(e.nameKw,()=>{this.layout.add(this.showFunctionKw(e.nameKw))}),this.formatNode(e.parenthesis)}formatParameterizedDataType(e){this.withComments(e.dataType,()=>{this.layout.add(this.showDataType(e.dataType))}),this.formatNode(e.parenthesis)}formatArraySubscript(e){let t;switch(e.array.type){case I.data_type:t=this.showDataType(e.array);break;case I.keyword:t=this.showKw(e.array);break;default:t=this.showIdentifier(e.array);break}this.withComments(e.array,()=>{this.layout.add(t)}),this.formatNode(e.parenthesis)}formatPropertyAccess(e){this.formatNode(e.object),this.layout.add(H.NO_SPACE,e.operator),this.formatNode(e.property)}formatParenthesis(e){let t=this.formatInlineExpression(e.children);t?(this.layout.add(e.openParen),this.layout.add(...t.getLayoutItems()),this.layout.add(H.NO_SPACE,e.closeParen,H.SPACE)):(this.layout.add(e.openParen,H.NEWLINE),P(this.cfg)?(this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(H.NEWLINE,H.INDENT,e.closeParen,H.SPACE))}formatBetweenPredicate(e){this.layout.add(this.showKw(e.betweenKw),H.SPACE),this.layout=this.formatSubExpression(e.expr1),this.layout.add(H.NO_SPACE,H.SPACE,this.showNonTabularKw(e.andKw),H.SPACE),this.layout=this.formatSubExpression(e.expr2),this.layout.add(H.SPACE)}formatCaseExpression(e){this.formatNode(e.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(e.expr),this.layout=this.formatSubExpression(e.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(H.NEWLINE,H.INDENT),this.formatNode(e.endKw)}formatCaseWhen(e){this.layout.add(H.NEWLINE,H.INDENT),this.formatNode(e.whenKw),this.layout=this.formatSubExpression(e.condition),this.formatNode(e.thenKw),this.layout=this.formatSubExpression(e.result)}formatCaseElse(e){this.layout.add(H.NEWLINE,H.INDENT),this.formatNode(e.elseKw),this.layout=this.formatSubExpression(e.result)}formatClause(e){this.isOnelineClause(e)?this.formatClauseInOnelineStyle(e):P(this.cfg)?this.formatClauseInTabularStyle(e):this.formatClauseInIndentedStyle(e)}isOnelineClause(e){return P(this.cfg)?this.dialectCfg.tabularOnelineClauses[e.nameKw.text]:this.dialectCfg.onelineClauses[e.nameKw.text]}formatClauseInIndentedStyle(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.NEWLINE),this.layout.indentation.increaseTopLevel(),this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.SPACE),this.layout=this.formatSubExpression(e.children)}formatClauseInTabularStyle(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.SPACE),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.NEWLINE),this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children)}formatLimitClause(e){this.withComments(e.limitKw,()=>{this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.limitKw))}),this.layout.indentation.increaseTopLevel(),P(this.cfg)?this.layout.add(H.SPACE):this.layout.add(H.NEWLINE,H.INDENT),e.offset?(this.layout=this.formatSubExpression(e.offset),this.layout.add(H.NO_SPACE,`,`,H.SPACE),this.layout=this.formatSubExpression(e.count)):this.layout=this.formatSubExpression(e.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(e){this.layout.add(`*`,H.SPACE)}formatLiteral(e){this.layout.add(e.text,H.SPACE)}formatIdentifier(e){this.layout.add(this.showIdentifier(e),H.SPACE)}formatParameter(e){this.layout.add(this.params.get(e),H.SPACE)}formatOperator({text:e}){this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(e)?this.layout.add(H.NO_SPACE,e):e===`:`?this.layout.add(H.NO_SPACE,e,H.SPACE):this.layout.add(e,H.SPACE)}formatComma(e){this.inline?this.layout.add(H.NO_SPACE,`,`,H.SPACE):this.layout.add(H.NO_SPACE,`,`,H.NEWLINE,H.INDENT)}withComments(e,t){this.formatComments(e.leadingComments),t(),this.formatComments(e.trailingComments)}formatComments(e){e&&e.forEach(e=>{e.type===I.line_comment?this.formatLineComment(e):this.formatBlockComment(e)})}formatLineComment(e){Pi(e.precedingWhitespace||``)?this.layout.add(H.NEWLINE,H.INDENT,e.text,H.MANDATORY_NEWLINE,H.INDENT):this.layout.getLayoutItems().length>0?this.layout.add(H.NO_NEWLINE,H.SPACE,e.text,H.MANDATORY_NEWLINE,H.INDENT):this.layout.add(e.text,H.MANDATORY_NEWLINE,H.INDENT)}formatBlockComment(e){e.type===I.block_comment&&this.isMultilineBlockComment(e)?(this.splitBlockComment(e.text).forEach(e=>{this.layout.add(H.NEWLINE,H.INDENT,e)}),this.layout.add(H.NEWLINE,H.INDENT)):this.layout.add(e.text,H.SPACE)}isMultilineBlockComment(e){return Pi(e.text)||Pi(e.precedingWhitespace||``)}isDocComment(e){let t=e.split(/\n/);return/^\/\*\*?$/.test(t[0])&&t.slice(1,t.length-1).every(e=>/^\s*\*/.test(e))&&/^\s*\*\/$/.test(O(t))}splitBlockComment(e){return this.isDocComment(e)?e.split(/\n/).map(e=>/^\s*\*/.test(e)?` `+e.replace(/^\s*/,``):e):e.split(/\n/).map(e=>e.replace(/^\s*/,``))}formatSubExpression(t){return new e({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline}).format(t)}formatInlineExpression(t){let n=this.params.getPositionalParameterIndex();try{return new e({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new La(this.cfg.expressionWidth),inline:!0}).format(t)}catch(e){if(e instanceof Ra){this.params.setPositionalParameterIndex(n);return}else throw e}}formatKeywordNode(e){switch(e.tokenType){case _.RESERVED_JOIN:return this.formatJoin(e);case _.AND:case _.OR:case _.XOR:return this.formatLogicalOperator(e);default:return this.formatKeyword(e)}}formatJoin(e){P(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE)}formatKeyword(e){this.layout.add(this.showKw(e),H.SPACE)}formatLogicalOperator(e){this.cfg.logicalOperatorNewline===`before`?P(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE):this.layout.add(this.showKw(e),H.NEWLINE,H.INDENT)}formatDataType(e){this.layout.add(this.showDataType(e),H.SPACE)}showKw(e){return Na(e.tokenType)?Ma(this.showNonTabularKw(e),this.cfg.indentStyle):this.showNonTabularKw(e)}showNonTabularKw(e){switch(this.cfg.keywordCase){case`preserve`:return k(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}showFunctionKw(e){return Na(e.tokenType)?Ma(this.showNonTabularFunctionKw(e),this.cfg.indentStyle):this.showNonTabularFunctionKw(e)}showNonTabularFunctionKw(e){switch(this.cfg.functionCase){case`preserve`:return k(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}showIdentifier(e){if(e.quoted)return e.text;switch(this.cfg.identifierCase){case`preserve`:return e.text;case`upper`:return e.text.toUpperCase();case`lower`:return e.text.toLowerCase()}}showDataType(e){switch(this.cfg.dataTypeCase){case`preserve`:return k(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}},Ba=class{constructor(e,t){this.dialect=e,this.cfg=t,this.params=new ua(this.cfg.params)}format(e){let t=this.parse(e);return this.formatAst(t).trimEnd()}parse(e){return Oa(this.dialect.tokenizer).parse(e,this.cfg.paramTypes||{})}formatAst(e){return e.map(e=>this.formatStatement(e)).join(`
|
|
15
|
-
`.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){let t=new za({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new ka(new Ia(la(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?t.add(H.NEWLINE,`;`):t.add(H.NO_NEWLINE,`;`)),t.toString()}},U=class extends Error{};function Va(e){for(let t of[`multilineLists`,`newlineBeforeOpenParen`,`newlineBeforeCloseParen`,`aliasAs`,`commaPosition`,`tabulateAlias`])if(t in e)throw new U(`${t} config is no more supported.`);if(e.expressionWidth<=0)throw new U(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!Ha(e.params)&&console.warn(`WARNING: All "params" option values should be strings.`),e.paramTypes&&!Ua(e.paramTypes))throw new U(`Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.`);return e}function Ha(e){return(e instanceof Array?e:Object.values(e)).every(e=>typeof e==`string`)}function Ua(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(e=>e.regex!==``):!0}var Wa=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Ga={bigquery:`bigquery`,clickhouse:`clickhouse`,db2:`db2`,db2i:`db2i`,duckdb:`duckdb`,hive:`hive`,mariadb:`mariadb`,mysql:`mysql`,n1ql:`n1ql`,plsql:`plsql`,postgresql:`postgresql`,redshift:`redshift`,spark:`spark`,sqlite:`sqlite`,sql:`sql`,tidb:`tidb`,trino:`trino`,transactsql:`transactsql`,tsql:`transactsql`,singlestoredb:`singlestoredb`,snowflake:`snowflake`},Ka=Object.keys(Ga),qa={tabWidth:2,useTabs:!1,keywordCase:`preserve`,identifierCase:`preserve`,dataTypeCase:`preserve`,functionCase:`preserve`,indentStyle:`standard`,logicalOperatorNewline:`before`,expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},Ja=(e,t={})=>{if(typeof t.language==`string`&&!Ka.includes(t.language))throw new U(`Unsupported SQL dialect: ${t.language}`);let n=Ga[t.language||`sql`];return Ya(e,Object.assign(Object.assign({},t),{dialect:Mi[n]}))},Ya=(e,t)=>{var{dialect:n}=t,r=Wa(t,[`dialect`]);if(typeof e!=`string`)throw Error(`Invalid query argument. Expected string, instead got `+typeof e);let i=Va(Object.assign(Object.assign({},qa),r));return new Ba(oa(n),i).format(e)},Xa={funnel:{description:`Track conversion through sequential steps. Entities (identified by bindingKey) move through ordered steps.`,structure:{funnel:{bindingKey:`Cube.dimension - identifies entities moving through funnel`,timeDimension:`Cube.dimension - time field for ordering events`,steps:[{name:`string - human readable step name`,filter:{member:`Cube.dimension`,operator:`equals | notEquals | contains | ...`,values:[`array of filter values`]},timeToConvert:`optional - max time window e.g. "7 days"`}],dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},flow:{description:`Analyze paths users take before/after a specific event. Shows event sequences.`,structure:{flow:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for ordering`,eventDimension:`Cube.dimension - the event type field`,startingStep:{filter:{member:`Cube.dimension`,operator:`equals`,values:[`event value`]}},stepsBefore:`number - how many steps to show before starting step`,stepsAfter:`number - how many steps to show after starting step`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},retention:{description:`Measure how many users return over time periods after initial activity.`,structure:{retention:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for cohort assignment`,granularity:`day | week | month - period size`,periods:`number - how many periods to analyze`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}}};function Za(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function W(e,t){let n=e.toLowerCase().trim(),r=t.toLowerCase().trim();if(n===r)return 1;if(r.includes(n))return .9;let i=r.split(/[\s_-]+/);for(let e of i){if(e===n)return .85;if(e.startsWith(n))return .75}let a=1-Za(n,r)/Math.max(n.length,r.length);return a>.5?a*.7:0}function G(e,t){let n=0;for(let r of t){let t=W(e,r);t>n&&(n=t)}return n}function Qa(e){let t=new Set(`a.an.the.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.could.should.may.might.must.can.and.or.but.if.then.else.when.where.why.how.what.which.who.this.that.these.those.i.me.my.we.our.you.your.he.she.it.they.them.their.in.on.at.to.for.of.with.by.from.up.down.out.over.under.about.into.through.during.before.after.above.below.between.show.me.get.find.list.give.tell.display.want.need.see.know`.split(`.`));return e.toLowerCase().replace(/[^\w\s]/g,` `).split(/\s+/).filter(e=>e.length>2&&!t.has(e))}function $a(e,t){let n=0,r=[],i=new Map,a=new Map;for(let o of t){let t=W(o,e.name);t>.5&&(n+=t*2,r.includes(`name`)||r.push(`name`));let s=W(o,e.title);if(s>.5&&(n+=s*1.5,r.includes(`title`)||r.push(`title`)),e.description){let t=W(o,e.description);t>.3&&(n+=t,r.includes(`description`)||r.push(`description`))}if(e.exampleQuestions)for(let t of e.exampleQuestions){let e=W(o,t);e>.3&&(n+=e*1.5,r.includes(`exampleQuestions`)||r.push(`exampleQuestions`))}for(let t of e.measures){let e=0,a=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,a)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`measures`)||r.push(`measures`);let a=i.get(t.name)||0;i.set(t.name,Math.max(a,e))}}for(let t of e.dimensions){let e=0,i=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,i)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`dimensions`)||r.push(`dimensions`);let i=a.get(t.name)||0;a.set(t.name,Math.max(i,e))}}}return{score:Math.min(1,n/(t.length*2)),matchedOn:r,suggestedMeasures:Array.from(i.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e),suggestedDimensions:Array.from(a.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e)}}function eo(e){let t=!!e.meta?.eventStream,n=e.dimensions.some(e=>e.type===`time`),r=e.dimensions.some(t=>t.name.toLowerCase().includes(`id`)||t.type===`number`||e.meta?.eventStream?.bindingKey&&t.name===e.meta.eventStream.bindingKey),i=t||n&&r;return{query:!0,funnel:i,flow:i,retention:i}}function to(e){let t=eo(e);if(!t.funnel&&!t.flow&&!t.retention)return;let n=[];if(e.meta?.eventStream?.bindingKey){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.bindingKey);n.push({dimension:e.meta.eventStream.bindingKey,description:t?.description||`Configured binding key`})}for(let t of e.dimensions)(t.name.split(`.`).pop()?.toLowerCase()||``).includes(`id`)&&!n.some(e=>e.dimension===t.name)&&n.push({dimension:t.name,description:t.description||`Potential entity identifier`});let r=[];if(e.meta?.eventStream?.timeDimension){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.timeDimension);r.push({dimension:e.meta.eventStream.timeDimension,description:t?.description||`Configured time dimension`})}for(let t of e.dimensions)t.type===`time`&&!r.some(e=>e.dimension===t.name)&&r.push({dimension:t.name,description:t.description});let i=[];for(let t of e.dimensions){let e=t.name.split(`.`).pop()?.toLowerCase()||``;t.type===`string`&&(e.includes(`type`)||e.includes(`event`)||e.includes(`status`)||e.includes(`state`)||e.includes(`action`))&&i.push({dimension:t.name,description:t.description||`Potential event type dimension`})}return{candidateBindingKeys:n,candidateTimeDimensions:r,candidateEventDimensions:i}}function no(e,t){let n=[];if(!t)return n;if(t.candidateBindingKeys.length>1&&n.push(`Choose bindingKey based on what entity to track through the analysis`),t.candidateEventDimensions.length>0){let e=t.candidateEventDimensions[0].dimension;n.push(`Query ${e} dimension to discover available values for funnel steps`)}return n.push(`Use /mcp/load with a standard query to discover dimension values before building analysis queries`),n}function ro(e,t={}){let{topic:n,intent:r,limit:i=10,minScore:a=.1}=t,o=[n,r].filter(Boolean).join(` `);if(!o.trim())return e.slice(0,i).map(e=>{let t=eo(e),n=to(e),r=no(e,n),i=t.funnel||t.flow||t.retention;return{cube:e.name,title:e.title,description:e.description,relevanceScore:1,matchedOn:[],suggestedMeasures:e.measures.slice(0,5).map(e=>e.name),suggestedDimensions:e.dimensions.slice(0,5).map(e=>e.name),capabilities:t,analysisConfig:n,hints:r.length>0?r:void 0,querySchemas:i?Xa:void 0}});let s=Qa(o);if(s.length===0)return[];let c=[];for(let t of e){let{score:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i}=$a(t,s);if(e>=a){let a=eo(t),o=to(t),s=no(t,o),l=a.funnel||a.flow||a.retention;c.push({cube:t.name,title:t.title,description:t.description,relevanceScore:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i,capabilities:a,analysisConfig:o,hints:s.length>0?s:void 0,querySchemas:l?Xa:void 0})}}return c.sort((e,t)=>t.relevanceScore-e.relevanceScore).slice(0,i)}function io(e,t,n){let r=null;for(let i of e){if(!n||n===`measure`)for(let e of i.measures){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`measure`})}if(!n||n===`dimension`)for(let e of i.dimensions){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`dimension`})}}return r}function ao(){let e=new Date,t=e.toISOString().split(`T`)[0],n=e=>e.toISOString().split(`T`)[0],r=e=>new Date(e.getFullYear(),e.getMonth(),1),i=e=>new Date(e.getFullYear(),0,1),a=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},o=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1);return new Date(e.getFullYear(),e.getMonth(),n)};return[{pattern:/\btoday\b/i,getDateRange:()=>[t,t],granularity:`day`},{pattern:/\byesterday\b/i,getDateRange:()=>{let t=new Date(e);t.setDate(t.getDate()-1);let r=n(t);return[r,r]},granularity:`day`},{pattern:/\bthis week\b/i,getDateRange:()=>[n(o(e)),t],granularity:`day`},{pattern:/\blast week\b/i,getDateRange:()=>{let t=new Date(o(e));t.setDate(t.getDate()-7);let r=new Date(t);return r.setDate(r.getDate()+6),[n(t),n(r)]},granularity:`day`},{pattern:/\bthis month\b/i,getDateRange:()=>[n(r(e)),t],granularity:`day`},{pattern:/\blast month\b/i,getDateRange:()=>{let t=new Date(e.getFullYear(),e.getMonth()-1,1),r=new Date(e.getFullYear(),e.getMonth(),0);return[n(t),n(r)]},granularity:`day`},{pattern:/\bthis quarter\b/i,getDateRange:()=>[n(a(e)),t],granularity:`month`},{pattern:/\blast quarter\b/i,getDateRange:()=>{let t=new Date(a(e));t.setMonth(t.getMonth()-3);let r=new Date(a(e));return r.setDate(r.getDate()-1),[n(t),n(r)]},granularity:`month`},{pattern:/\bthis year\b/i,getDateRange:()=>[n(i(e)),t],granularity:`month`},{pattern:/\blast year\b/i,getDateRange:()=>{let t=new Date(e.getFullYear()-1,0,1),r=new Date(e.getFullYear()-1,11,31);return[n(t),n(r)]},granularity:`month`},{pattern:/\blast (\d+) days?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-7),[n(r),t]},granularity:`day`},{pattern:/\blast (\d+) weeks?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-28),[n(r),t]},granularity:`week`},{pattern:/\blast (\d+) months?\b/i,getDateRange:()=>{let r=new Date(e);return r.setMonth(r.getMonth()-3),[n(r),t]},granularity:`month`},{pattern:/\bq([1-4])\b/i,getDateRange:()=>[n(new Date(e.getFullYear(),0,1)),n(new Date(e.getFullYear(),2,31))],granularity:`month`}]}var oo={funnel:/\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,flow:/\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,retention:/\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i};function so(e){let t=e.toLowerCase();return oo.funnel.test(t)?`funnel`:oo.flow.test(t)?`flow`:oo.retention.test(t)?`retention`:`query`}function co(e,t){let n=t||`the relevant cube`;switch(e){case`funnel`:return[`Use /mcp/discover to get ${n} funnel configuration and schema`,`Query the event dimension to discover available event types for funnel steps`,`Build funnel query with discovered values using the schema from discover`];case`flow`:return[`Use /mcp/discover to get ${n} flow configuration and schema`,`Query the event dimension to discover available event types`,`Build flow query specifying the starting event and steps before/after`];case`retention`:return[`Use /mcp/discover to get ${n} retention configuration and schema`,`Build retention query specifying granularity (day/week/month) and number of periods`]}}function lo(e){let t=ao(),n=e.toLowerCase();for(let e of t){let t=n.match(e.pattern);if(t){if(t[1]&&/^\d+$/.test(t[1])){let e=parseInt(t[1],10),r=new Date,i=r.toISOString().split(`T`)[0],a=e=>e.toISOString().split(`T`)[0];if(/days?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e),{dateRange:[a(t),i],granularity:`day`}}if(/weeks?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e*7),{dateRange:[a(t),i],granularity:e<=4?`day`:`week`}}if(/months?/.test(n)){let t=new Date(r);return t.setMonth(t.getMonth()-e),{dateRange:[a(t),i],granularity:e<=3?`day`:`month`}}}if(/^q[1-4]$/i.test(t[0])){let e=parseInt(t[1],10),n=new Date().getFullYear(),r=(e-1)*3,i=new Date(n,r,1),a=new Date(n,r+3,0),o=e=>e.toISOString().split(`T`)[0];return{dateRange:[o(i),o(a)],granularity:`month`}}return{dateRange:e.getDateRange(),granularity:e.granularity}}}return null}function uo(e){let t=e.toLowerCase();for(let{pattern:e,type:n}of[{pattern:/\b(total|sum|combined)\b/i,type:`sum`},{pattern:/\b(count|number of|how many)\b/i,type:`count`},{pattern:/\b(average|avg|mean)\b/i,type:`avg`},{pattern:/\b(maximum|max|highest|top)\b/i,type:`max`},{pattern:/\b(minimum|min|lowest|bottom)\b/i,type:`min`}])if(e.test(t))return{type:n,confidence:.8};return null}function fo(e){let t=e.toLowerCase(),n=[],r=/\bby\s+(\w+(?:\s+\w+)?)/gi,i;for(;(i=r.exec(t))!==null;)n.push(i[1].trim());let a=/\bper\s+(\w+)/gi;for(;(i=a.exec(t))!==null;)n.push(i[1].trim());let o=/\bfor each\s+(\w+)/gi;for(;(i=o.exec(t))!==null;)n.push(i[1].trim());return n}function po(e,t,n){let r=[],i=[],a={},o=so(t),s;if(n){let t=e.find(e=>e.name===n);t?(s=[t],r.push(`Using specified cube: ${n}`)):(i.push(`Specified cube '${n}' not found`),s=[])}else s=ro(e,{intent:t,limit:3}).map(t=>e.find(e=>e.name===t.cube)).filter(e=>e!==void 0),s.length>0&&r.push(`Identified relevant cubes: ${s.map(e=>e.name).join(`, `)}`);if(s.length===0){let e=o!==`query`,t=e?co(o,void 0):void 0;return{query:{},confidence:e?.7:0,reasoning:e?[`Detected ${o} intent from natural language`]:[`Could not identify relevant cubes for this query`],warnings:i,analysisMode:o,nextSteps:t}}let c=s[0],l=.5,u=uo(t);u&&(r.push(`Detected ${u.type} aggregation intent`),l+=.1);let d=[],f=t.toLowerCase();for(let e of c.measures){let t=[(e.name.split(`.`).pop()||e.name).toLowerCase(),e.title.toLowerCase(),...(e.synonyms||[]).map(e=>e.toLowerCase())];for(let n of t)if(f.includes(n)){d.push(e.name),r.push(`Matched measure '${e.name}' via keyword '${n}'`),l+=.15;break}}if(d.length===0&&u){let e=c.measures.filter(e=>e.type===u.type);if(e.length>0)d.push(e[0].name),r.push(`Suggested ${e[0].name} based on ${u.type} intent`);else if(u.type===`count`){let e=c.measures.find(e=>e.type===`count`||e.type===`countDistinct`);e&&(d.push(e.name),r.push(`Suggested ${e.name} for counting`))}}d.length===0&&c.measures.length>0&&(d.push(c.measures[0].name),r.push(`Using default measure: ${c.measures[0].name}`),i.push(`Could not determine specific measure from query, using default`)),a.measures=d;let p=fo(t),m=[];for(let e of p){let t=io(s,e,`dimension`);t&&(m.push(t.field),r.push(`Matched dimension '${t.field}' from grouping keyword '${e}'`),l+=.1)}for(let e of s)for(let t of e.dimensions){let e=[(t.name.split(`.`).pop()||t.name).toLowerCase(),t.title.toLowerCase(),...(t.synonyms||[]).map(e=>e.toLowerCase())];for(let n of e)if(f.includes(n)&&!m.includes(t.name)&&(f.includes(`by ${n}`)||f.includes(`per ${n}`))){m.push(t.name),r.push(`Matched dimension '${t.name}' as grouping`),l+=.1;break}}m.length>0&&(a.dimensions=m);let h=lo(t);if(h){let e=c.dimensions.find(e=>e.type===`time`);if(e){let t={dimension:e.name,dateRange:h.dateRange};h.granularity&&(t.granularity=h.granularity),a.timeDimensions=[t],r.push(`Applied time filter: ${h.dateRange[0]} to ${h.dateRange[1]}`),l+=.15}else i.push(`Time expression found but no time dimension in cube`)}if(l=Math.min(1,l),o!==`query`){let e=s.length>0?s[0].name:void 0;return{query:{},confidence:.7,reasoning:[`Detected ${o} intent from natural language`,...e?[`Found relevant cube: ${e}`]:[]],warnings:i.length>0?i:void 0,analysisMode:o,nextSteps:co(o,e)}}return{query:a,confidence:l,reasoning:r,warnings:i.length>0?i:void 0,analysisMode:`query`}}function mo(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function K(e,t){let n=null;for(let r of t){let t=mo(e.toLowerCase(),r.toLowerCase());t<=3&&(!n||t<n.distance)&&(n={field:r,distance:t})}return n}function ho(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid measure format: '${e}'. Expected 'CubeName.measureName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.measures.some(t=>t.name===e)){let i=io(t,o,`measure`);if(i&&i.cube===a)n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.measures.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Available measures: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function q(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid dimension format: '${e}'. Expected 'CubeName.dimensionName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.dimensions.some(t=>t.name===e)){let i=io(t,o,`dimension`);if(i&&i.cube===a)n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.dimensions.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Available dimensions: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function J(e,t,n,r){for(let i of e){if(`and`in i&&Array.isArray(i.and)){J(i.and,t,n,r);continue}if(`or`in i&&Array.isArray(i.or)){J(i.or,t,n,r);continue}if(`member`in i){let e=i.member,a=e.split(`.`);if(a.length!==2){n.push({type:`invalid_filter`,message:`Invalid filter member format: '${e}'`,field:e});continue}let[o,s]=a,c=t.find(e=>e.name===o);if(!c){let i=K(o,t.map(e=>e.name));i&&r.set(e,`${i.field}.${s}`),n.push({type:`cube_not_found`,message:`Cube '${o}' not found in filter`,field:e,suggestion:i?`Did you mean '${i.field}'?`:void 0,correctedValue:i?`${i.field}.${s}`:void 0});continue}let l=c.dimensions.some(t=>t.name===e),u=c.measures.some(t=>t.name===e);if(!l&&!u){let t=K(s,[...c.dimensions.map(e=>e.name.split(`.`).pop()),...c.measures.map(e=>e.name.split(`.`).pop())]);if(t){let i=`${o}.${t.field}`;r.set(e,i),n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e,suggestion:`Did you mean '${t.field}'?`,correctedValue:i})}else n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e})}}}}function go(e,t,n,r,i){let a=e.funnel;if(a)if(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`funnel.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`funnel.timeDimension is required`}),!a.steps||!Array.isArray(a.steps))n.push({type:`syntax_error`,message:`funnel.steps array is required`});else if(a.steps.length<2)n.push({type:`syntax_error`,message:`funnel requires at least 2 steps`});else for(let e=0;e<a.steps.length;e++){let o=a.steps[e];o.name||r.push({type:`best_practice`,message:`Step ${e+1} is missing a name`,suggestion:`Add descriptive names to funnel steps`}),o.filter&&`member`in o.filter&&J([o.filter],t,n,i)}}function _o(e,t,n,r,i){let a=e.flow;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`flow.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.timeDimension is required`}),a.eventDimension?typeof a.eventDimension==`string`&&q(a.eventDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.eventDimension is required`}),a.stepsBefore===void 0&&a.stepsAfter===void 0&&r.push({type:`best_practice`,message:`Neither stepsBefore nor stepsAfter specified`,suggestion:`Set stepsBefore and/or stepsAfter to see event sequences`}))}function vo(e,t,n,r,i){let a=e.retention;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`retention.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`retention.timeDimension is required`}),a.granularity||r.push({type:`best_practice`,message:`retention.granularity not specified`,suggestion:`Specify granularity: "day", "week", or "month"`}),a.periods||r.push({type:`best_practice`,message:`retention.periods not specified`,suggestion:`Specify number of periods to analyze`}))}function yo(e,t){let n=[],r=[],i=new Map;if(e.funnel)return go(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.flow)return _o(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.retention)return vo(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.measures)for(let r of e.measures)ho(r,t,n,i);if(e.dimensions)for(let r of e.dimensions)q(r,t,n,i);if(e.timeDimensions)for(let a of e.timeDimensions){q(a.dimension,t,n,i);let[e]=a.dimension.split(`.`),o=t.find(t=>t.name===e);if(o){let e=o.dimensions.find(e=>e.name===a.dimension);e&&e.type!==`time`&&r.push({type:`best_practice`,message:`Dimension '${a.dimension}' is not a time type (it's '${e.type}')`,field:a.dimension,suggestion:`Use a dimension with type "time" for timeDimensions`})}}e.filters&&J(e.filters,t,n,i),!e.measures?.length&&!e.dimensions?.length&&n.push({type:`syntax_error`,message:`Query must have at least one measure or dimension`}),e.measures&&e.measures.length>10&&r.push({type:`performance`,message:`Query has ${e.measures.length} measures, which may impact performance`,suggestion:`Consider splitting into multiple queries`}),e.dimensions&&e.dimensions.length>5&&r.push({type:`performance`,message:`Query has ${e.dimensions.length} dimensions, which may produce many rows`,suggestion:`Consider adding filters or reducing dimensions`});let a;if(i.size>0){let t=JSON.parse(JSON.stringify(e));t.measures&&=t.measures.map(e=>i.get(e)||e),t.dimensions&&=t.dimensions.map(e=>i.get(e)||e),t.timeDimensions&&=t.timeDimensions.map(e=>({...e,dimension:i.get(e.dimension)||e.dimension})),a=t}return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:i.size>0?a:void 0}}function bo(e){let t=0;return t+=(e.measures?.length||0)*1,t+=(e.dimensions?.length||0)*1,t+=(e.filters?.length||0)*2,t+=(e.timeDimensions?.length||0)*3,t<=5?`low`:t<=15?`medium`:`high`}function xo(e,t){if(`and`in e||`or`in e){let n=e.and||e.or||[];for(let e of n)xo(e,t);return}if(`member`in e){let[n]=e.member.split(`.`);n&&t.add(n)}}function So(){return crypto.randomUUID()}function Co(e){let t=e.dimensions||[],n=e.timeDimensions||[],r=e.measures||[];return{sortedDimensions:t,sortedTimeDimensions:n,timeDimensions:n,measures:r,leafMeasureAdditive:!0,leafMeasures:r,measureToLeafMeasures:{},hasNoTimeDimensionsWithoutGranularity:!0,allFiltersWithinSelectedDimensions:!0,isAdditive:!0,granularityHierarchies:{},hasMultipliedMeasures:!1,hasCumulativeMeasures:!1,windowGranularity:null,filterDimensionsSingleValueEqual:{},ownedDimensions:t,ownedTimeDimensionsWithRollupGranularity:[],ownedTimeDimensionsAsIs:[],allBackAliasMembers:{},hasMultiStage:!1}}function wo(e){if(e.hasExecutor()){let t=e.databaseExecutor;if(t?.engineType)return t.engineType}return`postgres`}function To(e){let t=[];if(e.timeDimensions?.some(e=>e.compareDateRange&&e.compareDateRange.length>=2)&&t.push(`comparison`),e.funnel&&e.funnel.steps?.length>=2&&t.push(`funnel`),e.flow&&e.flow.bindingKey&&e.flow.eventDimension&&t.push(`flow`),e.retention&&e.retention.bindingKey&&e.retention.timeDimension&&t.push(`retention`),t.length===0)return`regular`;if(t.length>1)throw Error(`Query contains multiple query modes: ${t.join(`, `)}`);return t[0]}function Eo(e,t,n){try{return n.analyzeQuery(e,t)}catch(e){console.warn(`Query analysis failed:`,String(e).replace(/\n|\r/g,``));return}}function Y(e,t,n){let r=t.validateQuery(e);if(!r.isValid)throw Error(`${n} validation failed: ${r.errors.join(`, `)}`)}async function X(e,t,n){return{sqlResult:await n.dryRun(e,t),analysis:Eo(e,t,n)}}function Z(e,t){let[n]=e.split(`.`);n&&t.add(n)}function Q(e,t){if(e)for(let n of e)n.cube&&t.add(n.cube)}function Do(e){let t=new Set;return e.measures?.forEach(e=>Z(e,t)),e.dimensions?.forEach(e=>Z(e,t)),e.timeDimensions?.forEach(e=>Z(e.dimension,t)),e.filters?.forEach(e=>{xo(e,t)}),Array.from(t)}function Oo(e){let t=new Set,n=e.funnel;typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t);for(let e of n.steps)`cube`in e&&e.cube&&t.add(e.cube);return Array.from(t)}function ko(e){let t=new Set,n=e.flow;return typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t),Z(n.eventDimension,t),Array.from(t)}function Ao(e){let t=new Set,n=e.retention;typeof n.timeDimension==`string`?Z(n.timeDimension,t):n.timeDimension?.cube&&t.add(n.timeDimension.cube),typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t);for(let e of n.breakdownDimensions||[])Z(e,t);return Array.from(t)}function $(e){let t=e.normalizedQueries||[],n=e.transformedQueries||t;return{mode:e.mode,queryType:e.queryType,normalizedQueries:t,queryOrder:e.cubesUsed,transformedQueries:n,pivotQuery:{query:e.query,cubes:e.cubesUsed},sql:{sql:[e.sqlResult.sql],params:e.sqlResult.params||[]},complexity:e.complexity,valid:!0,cubesUsed:e.cubesUsed,joinType:e.joinType,query:e.query,analysis:e.analysis,planningTrace:e.analysis?.planningTrace,modeMetadata:e.modeMetadata}}async function jo(e,t,n){return{regular:()=>Mo(e,t,n),comparison:()=>No(e,t,n),funnel:()=>Bo(e,t,n),flow:()=>Vo(e,t,n),retention:()=>Ho(e,t,n)}[To(e)]()}async function Mo(e,t,n){Y(e,n,`Query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=r.map(t=>({cube:t,query:{measures:e.measures?.filter(e=>e.startsWith(t+`.`))||[],dimensions:e.dimensions?.filter(e=>e.startsWith(t+`.`))||[],filters:e.filters||[],timeDimensions:e.timeDimensions||[],order:e.order||{},limit:e.limit,offset:e.offset}}));return $({mode:`regular`,queryType:`regularQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,normalizedQueries:s})}async function No(e,t,n){Y(e,n,`Comparison query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=e.timeDimensions?.find(e=>e.compareDateRange&&e.compareDateRange.length>=2),c=s?{timeDimension:s.dimension,granularity:s.granularity||`day`,periodCount:s.compareDateRange?.length??0,compareDateRange:s.compareDateRange,sqlPreviewPeriodIndex:0,note:`Dry-run SQL preview shows the first comparison period; execution runs all periods and merges results.`}:void 0;return $({mode:`comparison`,queryType:`comparisonQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,modeMetadata:c})}function Po(e,t,n){let r=wo(n),i=So();return{queryType:`regularQuery`,results:[{query:e,lastRefreshTime:new Date().toISOString(),usedPreAggregations:{},transformedQuery:Co(e),requestId:i,annotation:t.annotation,dataSource:`default`,dbType:r,extDbType:r,external:!1,slowQuery:!1,data:t.data,...t.cache&&{cache:t.cache},...t.warnings?.length&&{warnings:t.warnings}}],pivotQuery:{...e,queryType:`regularQuery`},slowQuery:!1}}function Fo(e,t){try{return Ja(e,{language:{postgres:`postgresql`,mysql:`mysql`,sqlite:`sqlite`,singlestore:`mysql`,duckdb:`postgresql`,databend:`postgresql`,snowflake:`postgresql`}[t],tabWidth:2,keywordCase:`upper`,indentStyle:`standard`})}catch(t){return console.warn(`SQL formatting failed:`,t),e}}function Io(e,t){return{sql:t.sql,params:t.params||[],query:e}}function Lo(e){return{cubes:e,queryGuidance:{dateHandling:{critical:`Date filtering and time grouping are DIFFERENT operations`,forAggregatedTotals:{description:`For totals over a date range (no time breakdown), use filters with inDateRange operator - NOT timeDimensions`,example:{filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}]},useCase:`User asks for "total sales last month", "top 5 last quarter", "sum over past year"`},forTimeSeries:{description:`For time series grouped by period (trend analysis), use timeDimensions WITH granularity`,example:{timeDimensions:[{dimension:`Cube.date`,granularity:`month`,dateRange:`last 3 months`}]},useCase:`User asks for "monthly breakdown", "daily trend", "per week"`},warning:`Using timeDimensions WITHOUT granularity groups by day, returning many rows instead of aggregates. This is the #1 query mistake.`},crossCubeQueries:{description:`Include dimensions from related cubes - the system auto-joins based on relationships`,example:`To get employee names with productivity: measures=["Productivity.total"], dimensions=["Employees.name"]`,howToFind:`Check the "joins" property in each cube metadata to see relationships`},topNPattern:{description:`For "top N" queries, use filters (not timeDimensions) + order + limit`,example:{measures:[`Cube.total`],dimensions:[`RelatedCube.name`],filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}],order:{"Cube.total":`desc`},limit:5}},filterSyntax:{description:`Filters must be flat arrays of { member, operator, values }`,operators:[`equals`,`notEquals`,`contains`,`notContains`,`gt`,`gte`,`lt`,`lte`,`inDateRange`,`beforeDate`,`afterDate`,`set`,`notSet`],dateRangeValues:{relative:[`last 7 days`,`last 3 months`,`last year`,`this week`,`this month`,`this quarter`],absolute:[`2024-01-01`,`2024-03-31`]}}}}}function Ro(e,t=500){return{error:e instanceof Error?e.message:e,status:t}}async function zo(e,t,n,r){return{results:(await Promise.allSettled(e.map(async e=>Po(e,await n.executeMultiCubeQuery(e,t,{skipCache:r?.skipCache}),n)))).map((t,n)=>t.status===`fulfilled`?{success:!0,...t.value}:{success:!1,error:t.reason instanceof Error?t.reason.message:String(t.reason),query:e[n]})}}async function Bo(e,t,n){Y(e,n,`Funnel query`);let r=Oo(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.funnel;return $({mode:`funnel`,queryType:`funnelQuery`,joinType:`funnel_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepCount:o.steps.length,steps:o.steps.map((e,t)=>({index:t,name:e.name,timeToConvert:e.timeToConvert,cube:`cube`in e?e.cube:void 0})),bindingKey:o.bindingKey,timeDimension:o.timeDimension,includeTimeMetrics:o.includeTimeMetrics,globalTimeWindow:o.globalTimeWindow}})}async function Vo(e,t,n){Y(e,n,`Flow query`);let r=ko(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.flow;return $({mode:`flow`,queryType:`flowQuery`,joinType:`flow_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepsBefore:o.stepsBefore,stepsAfter:o.stepsAfter,bindingKey:o.bindingKey,timeDimension:o.timeDimension,eventDimension:o.eventDimension,startingStep:o.startingStep}})}async function Ho(e,t,n){Y(e,n,`Retention query`);let r=Ao(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.retention;return $({mode:`retention`,queryType:`retentionQuery`,joinType:`retention_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{timeDimension:o.timeDimension,bindingKey:o.bindingKey,granularity:o.granularity,periods:o.periods,retentionType:o.retentionType,breakdownDimensions:o.breakdownDimensions,segmentCount:o.breakdownDimensions?.length||1}})}async function Uo(e,t){return{cubes:ro(e.getMetadata(),{topic:t.topic,intent:t.intent,limit:t.limit,minScore:t.minScore})}}async function Wo(e,t){return po(e.getMetadata(),t.naturalLanguage,t.cube)}async function Go(e,t){let n=e.getMetadata();return yo(t.query,n)}async function Ko(e,t,n){let r=n.query,i=e.validateQuery(r);if(!i.isValid)throw Error(`Query validation failed: ${i.errors.join(`, `)}`);let a=await e.executeMultiCubeQuery(r,t);return{data:a.data,annotation:a.annotation,query:r}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Lo}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return So}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Uo}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return jo}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Go}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Ro}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return wo}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return Wo}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return bo}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Io}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return Ko}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Po}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Fo}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Co}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return zo}});
|
|
15
|
+
`.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){let t=new za({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new ka(new Ia(la(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?t.add(H.NEWLINE,`;`):t.add(H.NO_NEWLINE,`;`)),t.toString()}},U=class extends Error{};function Va(e){for(let t of[`multilineLists`,`newlineBeforeOpenParen`,`newlineBeforeCloseParen`,`aliasAs`,`commaPosition`,`tabulateAlias`])if(t in e)throw new U(`${t} config is no more supported.`);if(e.expressionWidth<=0)throw new U(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!Ha(e.params)&&console.warn(`WARNING: All "params" option values should be strings.`),e.paramTypes&&!Ua(e.paramTypes))throw new U(`Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.`);return e}function Ha(e){return(e instanceof Array?e:Object.values(e)).every(e=>typeof e==`string`)}function Ua(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(e=>e.regex!==``):!0}var Wa=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Ga={bigquery:`bigquery`,clickhouse:`clickhouse`,db2:`db2`,db2i:`db2i`,duckdb:`duckdb`,hive:`hive`,mariadb:`mariadb`,mysql:`mysql`,n1ql:`n1ql`,plsql:`plsql`,postgresql:`postgresql`,redshift:`redshift`,spark:`spark`,sqlite:`sqlite`,sql:`sql`,tidb:`tidb`,trino:`trino`,transactsql:`transactsql`,tsql:`transactsql`,singlestoredb:`singlestoredb`,snowflake:`snowflake`},Ka=Object.keys(Ga),qa={tabWidth:2,useTabs:!1,keywordCase:`preserve`,identifierCase:`preserve`,dataTypeCase:`preserve`,functionCase:`preserve`,indentStyle:`standard`,logicalOperatorNewline:`before`,expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},Ja=(e,t={})=>{if(typeof t.language==`string`&&!Ka.includes(t.language))throw new U(`Unsupported SQL dialect: ${t.language}`);let n=Ga[t.language||`sql`];return Ya(e,Object.assign(Object.assign({},t),{dialect:Mi[n]}))},Ya=(e,t)=>{var{dialect:n}=t,r=Wa(t,[`dialect`]);if(typeof e!=`string`)throw Error(`Invalid query argument. Expected string, instead got `+typeof e);let i=Va(Object.assign(Object.assign({},qa),r));return new Ba(oa(n),i).format(e)},Xa={funnel:{description:`Track conversion through sequential steps. Entities (identified by bindingKey) move through ordered steps.`,structure:{funnel:{bindingKey:`Cube.dimension - identifies entities moving through funnel`,timeDimension:`Cube.dimension - time field for ordering events`,steps:[{name:`string - human readable step name`,filter:{member:`Cube.dimension`,operator:`equals | notEquals | contains | ...`,values:[`array of filter values`]},timeToConvert:`optional - max time window e.g. "7 days"`}],dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},flow:{description:`Analyze paths users take before/after a specific event. Shows event sequences.`,structure:{flow:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for ordering`,eventDimension:`Cube.dimension - the event type field`,startingStep:{filter:{member:`Cube.dimension`,operator:`equals`,values:[`event value`]}},stepsBefore:`number - how many steps to show before starting step`,stepsAfter:`number - how many steps to show after starting step`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},retention:{description:`Measure how many users return over time periods after initial activity.`,structure:{retention:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for cohort assignment`,granularity:`day | week | month - period size`,periods:`number - how many periods to analyze`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}}};function Za(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function W(e,t){let n=e.toLowerCase().trim(),r=t.toLowerCase().trim();if(n===r)return 1;if(r.includes(n))return .9;let i=r.split(/[\s_-]+/);for(let e of i){if(e===n)return .85;if(e.startsWith(n))return .75}let a=1-Za(n,r)/Math.max(n.length,r.length);return a>.5?a*.7:0}function G(e,t){let n=0;for(let r of t){let t=W(e,r);t>n&&(n=t)}return n}function Qa(e){let t=new Set(`a.an.the.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.could.should.may.might.must.can.and.or.but.if.then.else.when.where.why.how.what.which.who.this.that.these.those.i.me.my.we.our.you.your.he.she.it.they.them.their.in.on.at.to.for.of.with.by.from.up.down.out.over.under.about.into.through.during.before.after.above.below.between.show.me.get.find.list.give.tell.display.want.need.see.know`.split(`.`));return e.toLowerCase().replace(/[^\w\s]/g,` `).split(/\s+/).filter(e=>e.length>2&&!t.has(e))}function $a(e,t){let n=0,r=[],i=new Map,a=new Map;for(let o of t){let t=W(o,e.name);t>.5&&(n+=t*2,r.includes(`name`)||r.push(`name`));let s=W(o,e.title);if(s>.5&&(n+=s*1.5,r.includes(`title`)||r.push(`title`)),e.description){let t=W(o,e.description);t>.3&&(n+=t,r.includes(`description`)||r.push(`description`))}if(e.exampleQuestions)for(let t of e.exampleQuestions){let e=W(o,t);e>.3&&(n+=e*1.5,r.includes(`exampleQuestions`)||r.push(`exampleQuestions`))}for(let t of e.measures){let e=0,a=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,a)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`measures`)||r.push(`measures`);let a=i.get(t.name)||0;i.set(t.name,Math.max(a,e))}}for(let t of e.dimensions){let e=0,i=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,i)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`dimensions`)||r.push(`dimensions`);let i=a.get(t.name)||0;a.set(t.name,Math.max(i,e))}}}return{score:Math.min(1,n/(t.length*2)),matchedOn:r,suggestedMeasures:Array.from(i.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e),suggestedDimensions:Array.from(a.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e)}}function eo(e){let t=!!e.meta?.eventStream,n=e.dimensions.some(e=>e.type===`time`),r=e.dimensions.some(t=>t.name.toLowerCase().includes(`id`)||t.type===`number`||e.meta?.eventStream?.bindingKey&&t.name===e.meta.eventStream.bindingKey),i=t||n&&r;return{query:!0,funnel:i,flow:i,retention:i}}function to(e){let t=eo(e);if(!t.funnel&&!t.flow&&!t.retention)return;let n=[];if(e.meta?.eventStream?.bindingKey){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.bindingKey);n.push({dimension:e.meta.eventStream.bindingKey,description:t?.description||`Configured binding key`})}for(let t of e.dimensions)(t.name.split(`.`).pop()?.toLowerCase()||``).includes(`id`)&&!n.some(e=>e.dimension===t.name)&&n.push({dimension:t.name,description:t.description||`Potential entity identifier`});let r=[];if(e.meta?.eventStream?.timeDimension){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.timeDimension);r.push({dimension:e.meta.eventStream.timeDimension,description:t?.description||`Configured time dimension`})}for(let t of e.dimensions)t.type===`time`&&!r.some(e=>e.dimension===t.name)&&r.push({dimension:t.name,description:t.description});let i=[];for(let t of e.dimensions){let e=t.name.split(`.`).pop()?.toLowerCase()||``;t.type===`string`&&(e.includes(`type`)||e.includes(`event`)||e.includes(`status`)||e.includes(`state`)||e.includes(`action`))&&i.push({dimension:t.name,description:t.description||`Potential event type dimension`})}return{candidateBindingKeys:n,candidateTimeDimensions:r,candidateEventDimensions:i}}function no(e,t){let n=[];if(!t)return n;if(t.candidateBindingKeys.length>1&&n.push(`Choose bindingKey based on what entity to track through the analysis`),t.candidateEventDimensions.length>0){let e=t.candidateEventDimensions[0].dimension;n.push(`Query ${e} dimension to discover available values for funnel steps`)}return n.push(`Use /mcp/load with a standard query to discover dimension values before building analysis queries`),n}function ro(e,t={}){let{topic:n,intent:r,limit:i=10,minScore:a=.1}=t,o=[n,r].filter(Boolean).join(` `);if(!o.trim())return e.slice(0,i).map(e=>{let t=eo(e),n=to(e),r=no(e,n),i=t.funnel||t.flow||t.retention;return{cube:e.name,title:e.title,description:e.description,relevanceScore:1,matchedOn:[],suggestedMeasures:e.measures.slice(0,5).map(e=>e.name),suggestedDimensions:e.dimensions.slice(0,5).map(e=>e.name),capabilities:t,analysisConfig:n,hints:r.length>0?r:void 0,querySchemas:i?Xa:void 0}});let s=Qa(o);if(s.length===0)return[];let c=[];for(let t of e){let{score:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i}=$a(t,s);if(e>=a){let a=eo(t),o=to(t),s=no(t,o),l=a.funnel||a.flow||a.retention;c.push({cube:t.name,title:t.title,description:t.description,relevanceScore:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i,capabilities:a,analysisConfig:o,hints:s.length>0?s:void 0,querySchemas:l?Xa:void 0})}}return c.sort((e,t)=>t.relevanceScore-e.relevanceScore).slice(0,i)}function io(e,t,n){let r=null;for(let i of e){if(!n||n===`measure`)for(let e of i.measures){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`measure`})}if(!n||n===`dimension`)for(let e of i.dimensions){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`dimension`})}}return r}function ao(){let e=new Date,t=e.toISOString().split(`T`)[0],n=e=>e.toISOString().split(`T`)[0],r=e=>new Date(e.getFullYear(),e.getMonth(),1),i=e=>new Date(e.getFullYear(),0,1),a=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},o=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1);return new Date(e.getFullYear(),e.getMonth(),n)};return[{pattern:/\btoday\b/i,getDateRange:()=>[t,t],granularity:`day`},{pattern:/\byesterday\b/i,getDateRange:()=>{let t=new Date(e);t.setDate(t.getDate()-1);let r=n(t);return[r,r]},granularity:`day`},{pattern:/\bthis week\b/i,getDateRange:()=>[n(o(e)),t],granularity:`day`},{pattern:/\blast week\b/i,getDateRange:()=>{let t=new Date(o(e));t.setDate(t.getDate()-7);let r=new Date(t);return r.setDate(r.getDate()+6),[n(t),n(r)]},granularity:`day`},{pattern:/\bthis month\b/i,getDateRange:()=>[n(r(e)),t],granularity:`day`},{pattern:/\blast month\b/i,getDateRange:()=>{let t=new Date(e.getFullYear(),e.getMonth()-1,1),r=new Date(e.getFullYear(),e.getMonth(),0);return[n(t),n(r)]},granularity:`day`},{pattern:/\bthis quarter\b/i,getDateRange:()=>[n(a(e)),t],granularity:`month`},{pattern:/\blast quarter\b/i,getDateRange:()=>{let t=new Date(a(e));t.setMonth(t.getMonth()-3);let r=new Date(a(e));return r.setDate(r.getDate()-1),[n(t),n(r)]},granularity:`month`},{pattern:/\bthis year\b/i,getDateRange:()=>[n(i(e)),t],granularity:`month`},{pattern:/\blast year\b/i,getDateRange:()=>{let t=new Date(e.getFullYear()-1,0,1),r=new Date(e.getFullYear()-1,11,31);return[n(t),n(r)]},granularity:`month`},{pattern:/\blast (\d+) days?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-7),[n(r),t]},granularity:`day`},{pattern:/\blast (\d+) weeks?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-28),[n(r),t]},granularity:`week`},{pattern:/\blast (\d+) months?\b/i,getDateRange:()=>{let r=new Date(e);return r.setMonth(r.getMonth()-3),[n(r),t]},granularity:`month`},{pattern:/\bq([1-4])\b/i,getDateRange:()=>[n(new Date(e.getFullYear(),0,1)),n(new Date(e.getFullYear(),2,31))],granularity:`month`}]}var oo={funnel:/\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,flow:/\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,retention:/\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i};function so(e){let t=e.toLowerCase();return oo.funnel.test(t)?`funnel`:oo.flow.test(t)?`flow`:oo.retention.test(t)?`retention`:`query`}function co(e,t){let n=t||`the relevant cube`;switch(e){case`funnel`:return[`Use /mcp/discover to get ${n} funnel configuration and schema`,`Query the event dimension to discover available event types for funnel steps`,`Build funnel query with discovered values using the schema from discover`];case`flow`:return[`Use /mcp/discover to get ${n} flow configuration and schema`,`Query the event dimension to discover available event types`,`Build flow query specifying the starting event and steps before/after`];case`retention`:return[`Use /mcp/discover to get ${n} retention configuration and schema`,`Build retention query specifying granularity (day/week/month) and number of periods`]}}function lo(e){let t=ao(),n=e.toLowerCase();for(let e of t){let t=n.match(e.pattern);if(t){if(t[1]&&/^\d+$/.test(t[1])){let e=parseInt(t[1],10),r=new Date,i=r.toISOString().split(`T`)[0],a=e=>e.toISOString().split(`T`)[0];if(/days?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e),{dateRange:[a(t),i],granularity:`day`}}if(/weeks?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e*7),{dateRange:[a(t),i],granularity:e<=4?`day`:`week`}}if(/months?/.test(n)){let t=new Date(r);return t.setMonth(t.getMonth()-e),{dateRange:[a(t),i],granularity:e<=3?`day`:`month`}}}if(/^q[1-4]$/i.test(t[0])){let e=parseInt(t[1],10),n=new Date().getFullYear(),r=(e-1)*3,i=new Date(n,r,1),a=new Date(n,r+3,0),o=e=>e.toISOString().split(`T`)[0];return{dateRange:[o(i),o(a)],granularity:`month`}}return{dateRange:e.getDateRange(),granularity:e.granularity}}}return null}function uo(e){let t=e.toLowerCase();for(let{pattern:e,type:n}of[{pattern:/\b(total|sum|combined)\b/i,type:`sum`},{pattern:/\b(count|number of|how many)\b/i,type:`count`},{pattern:/\b(average|avg|mean)\b/i,type:`avg`},{pattern:/\b(maximum|max|highest|top)\b/i,type:`max`},{pattern:/\b(minimum|min|lowest|bottom)\b/i,type:`min`}])if(e.test(t))return{type:n,confidence:.8};return null}function fo(e){let t=e.toLowerCase(),n=[],r=/\bby\s+(\w+(?:\s+\w+)?)/gi,i;for(;(i=r.exec(t))!==null;)n.push(i[1].trim());let a=/\bper\s+(\w+)/gi;for(;(i=a.exec(t))!==null;)n.push(i[1].trim());let o=/\bfor each\s+(\w+)/gi;for(;(i=o.exec(t))!==null;)n.push(i[1].trim());return n}function po(e,t,n){let r=[],i=[],a={},o=so(t),s;if(n){let t=e.find(e=>e.name===n);t?(s=[t],r.push(`Using specified cube: ${n}`)):(i.push(`Specified cube '${n}' not found`),s=[])}else s=ro(e,{intent:t,limit:3}).map(t=>e.find(e=>e.name===t.cube)).filter(e=>e!==void 0),s.length>0&&r.push(`Identified relevant cubes: ${s.map(e=>e.name).join(`, `)}`);if(s.length===0){let e=o!==`query`,t=e?co(o,void 0):void 0;return{query:{},confidence:e?.7:0,reasoning:e?[`Detected ${o} intent from natural language`]:[`Could not identify relevant cubes for this query`],warnings:i,analysisMode:o,nextSteps:t}}let c=s[0],l=.5,u=uo(t);u&&(r.push(`Detected ${u.type} aggregation intent`),l+=.1);let d=[],f=t.toLowerCase();for(let e of c.measures){let t=[(e.name.split(`.`).pop()||e.name).toLowerCase(),e.title.toLowerCase(),...(e.synonyms||[]).map(e=>e.toLowerCase())];for(let n of t)if(f.includes(n)){d.push(e.name),r.push(`Matched measure '${e.name}' via keyword '${n}'`),l+=.15;break}}if(d.length===0&&u){let e=c.measures.filter(e=>e.type===u.type);if(e.length>0)d.push(e[0].name),r.push(`Suggested ${e[0].name} based on ${u.type} intent`);else if(u.type===`count`){let e=c.measures.find(e=>e.type===`count`||e.type===`countDistinct`);e&&(d.push(e.name),r.push(`Suggested ${e.name} for counting`))}}d.length===0&&c.measures.length>0&&(d.push(c.measures[0].name),r.push(`Using default measure: ${c.measures[0].name}`),i.push(`Could not determine specific measure from query, using default`)),a.measures=d;let p=fo(t),m=[];for(let e of p){let t=io(s,e,`dimension`);t&&(m.push(t.field),r.push(`Matched dimension '${t.field}' from grouping keyword '${e}'`),l+=.1)}for(let e of s)for(let t of e.dimensions){let e=[(t.name.split(`.`).pop()||t.name).toLowerCase(),t.title.toLowerCase(),...(t.synonyms||[]).map(e=>e.toLowerCase())];for(let n of e)if(f.includes(n)&&!m.includes(t.name)&&(f.includes(`by ${n}`)||f.includes(`per ${n}`))){m.push(t.name),r.push(`Matched dimension '${t.name}' as grouping`),l+=.1;break}}m.length>0&&(a.dimensions=m);let h=lo(t);if(h){let e=c.dimensions.find(e=>e.type===`time`);if(e){let t={dimension:e.name,dateRange:h.dateRange};h.granularity&&(t.granularity=h.granularity),a.timeDimensions=[t],r.push(`Applied time filter: ${h.dateRange[0]} to ${h.dateRange[1]}`),l+=.15}else i.push(`Time expression found but no time dimension in cube`)}if(l=Math.min(1,l),o!==`query`){let e=s.length>0?s[0].name:void 0;return{query:{},confidence:.7,reasoning:[`Detected ${o} intent from natural language`,...e?[`Found relevant cube: ${e}`]:[]],warnings:i.length>0?i:void 0,analysisMode:o,nextSteps:co(o,e)}}return{query:a,confidence:l,reasoning:r,warnings:i.length>0?i:void 0,analysisMode:`query`}}function mo(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function K(e,t){let n=null;for(let r of t){let t=mo(e.toLowerCase(),r.toLowerCase());t<=3&&(!n||t<n.distance)&&(n={field:r,distance:t})}return n}function ho(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid measure format: '${e}'. Expected 'CubeName.measureName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.measures.some(t=>t.name===e)){let i=io(t,o,`measure`);if(i&&i.cube===a)n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.measures.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Available measures: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function q(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid dimension format: '${e}'. Expected 'CubeName.dimensionName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.dimensions.some(t=>t.name===e)){let i=io(t,o,`dimension`);if(i&&i.cube===a)n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.dimensions.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Available dimensions: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function J(e,t,n,r){for(let i of e){if(`and`in i&&Array.isArray(i.and)){J(i.and,t,n,r);continue}if(`or`in i&&Array.isArray(i.or)){J(i.or,t,n,r);continue}if(`member`in i){let e=i.member,a=e.split(`.`);if(a.length!==2){n.push({type:`invalid_filter`,message:`Invalid filter member format: '${e}'`,field:e});continue}let[o,s]=a,c=t.find(e=>e.name===o);if(!c){let i=K(o,t.map(e=>e.name));i&&r.set(e,`${i.field}.${s}`),n.push({type:`cube_not_found`,message:`Cube '${o}' not found in filter`,field:e,suggestion:i?`Did you mean '${i.field}'?`:void 0,correctedValue:i?`${i.field}.${s}`:void 0});continue}let l=c.dimensions.some(t=>t.name===e),u=c.measures.some(t=>t.name===e);if(!l&&!u){let t=K(s,[...c.dimensions.map(e=>e.name.split(`.`).pop()),...c.measures.map(e=>e.name.split(`.`).pop())]);if(t){let i=`${o}.${t.field}`;r.set(e,i),n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e,suggestion:`Did you mean '${t.field}'?`,correctedValue:i})}else n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e})}}}}function go(e,t,n,r,i){let a=e.funnel;if(a)if(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`funnel.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`funnel.timeDimension is required`}),!a.steps||!Array.isArray(a.steps))n.push({type:`syntax_error`,message:`funnel.steps array is required`});else if(a.steps.length<2)n.push({type:`syntax_error`,message:`funnel requires at least 2 steps`});else for(let e=0;e<a.steps.length;e++){let o=a.steps[e];o.name||r.push({type:`best_practice`,message:`Step ${e+1} is missing a name`,suggestion:`Add descriptive names to funnel steps`}),o.filter&&`member`in o.filter&&J([o.filter],t,n,i)}}function _o(e,t,n,r,i){let a=e.flow;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`flow.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.timeDimension is required`}),a.eventDimension?typeof a.eventDimension==`string`&&q(a.eventDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.eventDimension is required`}),a.stepsBefore===void 0&&a.stepsAfter===void 0&&r.push({type:`best_practice`,message:`Neither stepsBefore nor stepsAfter specified`,suggestion:`Set stepsBefore and/or stepsAfter to see event sequences`}))}function vo(e,t,n,r,i){let a=e.retention;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`retention.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`retention.timeDimension is required`}),a.granularity||r.push({type:`best_practice`,message:`retention.granularity not specified`,suggestion:`Specify granularity: "day", "week", or "month"`}),a.periods||r.push({type:`best_practice`,message:`retention.periods not specified`,suggestion:`Specify number of periods to analyze`}))}function yo(e,t){let n=[],r=[],i=new Map;if(e.funnel)return go(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.flow)return _o(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.retention)return vo(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.measures)for(let r of e.measures)ho(r,t,n,i);if(e.dimensions)for(let r of e.dimensions)q(r,t,n,i);if(e.timeDimensions)for(let a of e.timeDimensions){q(a.dimension,t,n,i);let[e]=a.dimension.split(`.`),o=t.find(t=>t.name===e);if(o){let e=o.dimensions.find(e=>e.name===a.dimension);e&&e.type!==`time`&&r.push({type:`best_practice`,message:`Dimension '${a.dimension}' is not a time type (it's '${e.type}')`,field:a.dimension,suggestion:`Use a dimension with type "time" for timeDimensions`})}}e.filters&&J(e.filters,t,n,i),!e.measures?.length&&!e.dimensions?.length&&n.push({type:`syntax_error`,message:`Query must have at least one measure or dimension`}),e.measures&&e.measures.length>10&&r.push({type:`performance`,message:`Query has ${e.measures.length} measures, which may impact performance`,suggestion:`Consider splitting into multiple queries`}),e.dimensions&&e.dimensions.length>5&&r.push({type:`performance`,message:`Query has ${e.dimensions.length} dimensions, which may produce many rows`,suggestion:`Consider adding filters or reducing dimensions`});let a;if(i.size>0){let t=JSON.parse(JSON.stringify(e));t.measures&&=t.measures.map(e=>i.get(e)||e),t.dimensions&&=t.dimensions.map(e=>i.get(e)||e),t.timeDimensions&&=t.timeDimensions.map(e=>({...e,dimension:i.get(e.dimension)||e.dimension})),a=t}return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:i.size>0?a:void 0}}function bo(e){let t=0;return t+=(e.measures?.length||0)*1,t+=(e.dimensions?.length||0)*1,t+=(e.filters?.length||0)*2,t+=(e.timeDimensions?.length||0)*3,t<=5?`low`:t<=15?`medium`:`high`}function xo(e,t){if(`and`in e||`or`in e){let n=e.and||e.or||[];for(let e of n)xo(e,t);return}if(`member`in e){let[n]=e.member.split(`.`);n&&t.add(n)}}function So(){return crypto.randomUUID()}function Co(e){let t=e.dimensions||[],n=e.timeDimensions||[],r=e.measures||[];return{sortedDimensions:t,sortedTimeDimensions:n,timeDimensions:n,measures:r,leafMeasureAdditive:!0,leafMeasures:r,measureToLeafMeasures:{},hasNoTimeDimensionsWithoutGranularity:!0,allFiltersWithinSelectedDimensions:!0,isAdditive:!0,granularityHierarchies:{},hasMultipliedMeasures:!1,hasCumulativeMeasures:!1,windowGranularity:null,filterDimensionsSingleValueEqual:{},ownedDimensions:t,ownedTimeDimensionsWithRollupGranularity:[],ownedTimeDimensionsAsIs:[],allBackAliasMembers:{},hasMultiStage:!1}}function wo(e){return e.getEngineType()??`postgres`}function To(e){let t=[];if(e.timeDimensions?.some(e=>e.compareDateRange&&e.compareDateRange.length>=2)&&t.push(`comparison`),e.funnel&&e.funnel.steps?.length>=2&&t.push(`funnel`),e.flow&&e.flow.bindingKey&&e.flow.eventDimension&&t.push(`flow`),e.retention&&e.retention.bindingKey&&e.retention.timeDimension&&t.push(`retention`),t.length===0)return`regular`;if(t.length>1)throw Error(`Query contains multiple query modes: ${t.join(`, `)}`);return t[0]}function Eo(e,t,n){try{return n.analyzeQuery(e,t)}catch(e){console.warn(`Query analysis failed:`,String(e).replace(/\n|\r/g,``));return}}function Y(e,t,n){let r=t.validateQuery(e);if(!r.isValid)throw Error(`${n} validation failed: ${r.errors.join(`, `)}`)}async function X(e,t,n){return{sqlResult:await n.dryRun(e,t),analysis:Eo(e,t,n)}}function Z(e,t){let[n]=e.split(`.`);n&&t.add(n)}function Q(e,t){if(e)for(let n of e)n.cube&&t.add(n.cube)}function Do(e){let t=new Set;return e.measures?.forEach(e=>Z(e,t)),e.dimensions?.forEach(e=>Z(e,t)),e.timeDimensions?.forEach(e=>Z(e.dimension,t)),e.filters?.forEach(e=>{xo(e,t)}),Array.from(t)}function Oo(e){let t=new Set,n=e.funnel;typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t);for(let e of n.steps)`cube`in e&&e.cube&&t.add(e.cube);return Array.from(t)}function ko(e){let t=new Set,n=e.flow;return typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t),Z(n.eventDimension,t),Array.from(t)}function Ao(e){let t=new Set,n=e.retention;typeof n.timeDimension==`string`?Z(n.timeDimension,t):n.timeDimension?.cube&&t.add(n.timeDimension.cube),typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t);for(let e of n.breakdownDimensions||[])Z(e,t);return Array.from(t)}function $(e){let t=e.normalizedQueries||[],n=e.transformedQueries||t;return{mode:e.mode,queryType:e.queryType,normalizedQueries:t,queryOrder:e.cubesUsed,transformedQueries:n,pivotQuery:{query:e.query,cubes:e.cubesUsed},sql:{sql:[e.sqlResult.sql],params:e.sqlResult.params||[]},complexity:e.complexity,valid:!0,cubesUsed:e.cubesUsed,joinType:e.joinType,query:e.query,analysis:e.analysis,planningTrace:e.analysis?.planningTrace,modeMetadata:e.modeMetadata}}async function jo(e,t,n){return{regular:()=>Mo(e,t,n),comparison:()=>No(e,t,n),funnel:()=>Bo(e,t,n),flow:()=>Vo(e,t,n),retention:()=>Ho(e,t,n)}[To(e)]()}async function Mo(e,t,n){Y(e,n,`Query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=r.map(t=>({cube:t,query:{measures:e.measures?.filter(e=>e.startsWith(t+`.`))||[],dimensions:e.dimensions?.filter(e=>e.startsWith(t+`.`))||[],filters:e.filters||[],timeDimensions:e.timeDimensions||[],order:e.order||{},limit:e.limit,offset:e.offset}}));return $({mode:`regular`,queryType:`regularQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,normalizedQueries:s})}async function No(e,t,n){Y(e,n,`Comparison query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=e.timeDimensions?.find(e=>e.compareDateRange&&e.compareDateRange.length>=2),c=s?{timeDimension:s.dimension,granularity:s.granularity||`day`,periodCount:s.compareDateRange?.length??0,compareDateRange:s.compareDateRange,sqlPreviewPeriodIndex:0,note:`Dry-run SQL preview shows the first comparison period; execution runs all periods and merges results.`}:void 0;return $({mode:`comparison`,queryType:`comparisonQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,modeMetadata:c})}function Po(e,t,n){let r=wo(n),i=So();return{queryType:`regularQuery`,results:[{query:e,lastRefreshTime:new Date().toISOString(),usedPreAggregations:{},transformedQuery:Co(e),requestId:i,annotation:t.annotation,dataSource:`default`,dbType:r,extDbType:r,external:!1,slowQuery:!1,data:t.data,...t.cache&&{cache:t.cache},...t.warnings?.length&&{warnings:t.warnings}}],pivotQuery:{...e,queryType:`regularQuery`},slowQuery:!1}}function Fo(e,t){try{return Ja(e,{language:{postgres:`postgresql`,mysql:`mysql`,sqlite:`sqlite`,singlestore:`mysql`,duckdb:`postgresql`,databend:`postgresql`,snowflake:`postgresql`}[t],tabWidth:2,keywordCase:`upper`,indentStyle:`standard`})}catch(t){return console.warn(`SQL formatting failed:`,t),e}}function Io(e,t){return{sql:t.sql,params:t.params||[],query:e}}function Lo(e){return{cubes:e,queryGuidance:{dateHandling:{critical:`Date filtering and time grouping are DIFFERENT operations`,forAggregatedTotals:{description:`For totals over a date range (no time breakdown), use filters with inDateRange operator - NOT timeDimensions`,example:{filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}]},useCase:`User asks for "total sales last month", "top 5 last quarter", "sum over past year"`},forTimeSeries:{description:`For time series grouped by period (trend analysis), use timeDimensions WITH granularity`,example:{timeDimensions:[{dimension:`Cube.date`,granularity:`month`,dateRange:`last 3 months`}]},useCase:`User asks for "monthly breakdown", "daily trend", "per week"`},warning:`Using timeDimensions WITHOUT granularity groups by day, returning many rows instead of aggregates. This is the #1 query mistake.`},crossCubeQueries:{description:`Include dimensions from related cubes - the system auto-joins based on relationships`,example:`To get employee names with productivity: measures=["Productivity.total"], dimensions=["Employees.name"]`,howToFind:`Check the "joins" property in each cube metadata to see relationships`},topNPattern:{description:`For "top N" queries, use filters (not timeDimensions) + order + limit`,example:{measures:[`Cube.total`],dimensions:[`RelatedCube.name`],filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}],order:{"Cube.total":`desc`},limit:5}},filterSyntax:{description:`Filters must be flat arrays of { member, operator, values }`,operators:[`equals`,`notEquals`,`contains`,`notContains`,`gt`,`gte`,`lt`,`lte`,`inDateRange`,`beforeDate`,`afterDate`,`set`,`notSet`],dateRangeValues:{relative:[`last 7 days`,`last 3 months`,`last year`,`this week`,`this month`,`this quarter`],absolute:[`2024-01-01`,`2024-03-31`]}}}}}function Ro(e,t=500){return{error:e instanceof Error?e.message:e,status:t}}async function zo(e,t,n,r){return{results:(await Promise.allSettled(e.map(async e=>Po(e,await n.executeMultiCubeQuery(e,t,{skipCache:r?.skipCache}),n)))).map((t,n)=>t.status===`fulfilled`?{success:!0,...t.value}:{success:!1,error:t.reason instanceof Error?t.reason.message:String(t.reason),query:e[n]})}}async function Bo(e,t,n){Y(e,n,`Funnel query`);let r=Oo(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.funnel;return $({mode:`funnel`,queryType:`funnelQuery`,joinType:`funnel_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepCount:o.steps.length,steps:o.steps.map((e,t)=>({index:t,name:e.name,timeToConvert:e.timeToConvert,cube:`cube`in e?e.cube:void 0})),bindingKey:o.bindingKey,timeDimension:o.timeDimension,includeTimeMetrics:o.includeTimeMetrics,globalTimeWindow:o.globalTimeWindow}})}async function Vo(e,t,n){Y(e,n,`Flow query`);let r=ko(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.flow;return $({mode:`flow`,queryType:`flowQuery`,joinType:`flow_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepsBefore:o.stepsBefore,stepsAfter:o.stepsAfter,bindingKey:o.bindingKey,timeDimension:o.timeDimension,eventDimension:o.eventDimension,startingStep:o.startingStep}})}async function Ho(e,t,n){Y(e,n,`Retention query`);let r=Ao(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.retention;return $({mode:`retention`,queryType:`retentionQuery`,joinType:`retention_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{timeDimension:o.timeDimension,bindingKey:o.bindingKey,granularity:o.granularity,periods:o.periods,retentionType:o.retentionType,breakdownDimensions:o.breakdownDimensions,segmentCount:o.breakdownDimensions?.length||1}})}async function Uo(e,t){return{cubes:ro(e.getMetadata(),{topic:t.topic,intent:t.intent,limit:t.limit,minScore:t.minScore})}}async function Wo(e,t){return po(e.getMetadata(),t.naturalLanguage,t.cube)}async function Go(e,t){let n=e.getMetadata();return yo(t.query,n)}async function Ko(e,t,n){let r=n.query,i=e.validateQuery(r);if(!i.isValid)throw Error(`Query validation failed: ${i.errors.join(`, `)}`);let a=await e.executeMultiCubeQuery(r,t);return{data:a.data,annotation:a.annotation,query:r}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Lo}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return So}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Uo}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return jo}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Go}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Ro}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return wo}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return Wo}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return bo}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Io}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return Ko}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Po}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Fo}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Co}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return zo}});
|
|
@@ -5010,11 +5010,7 @@ function wo(e) {
|
|
|
5010
5010
|
};
|
|
5011
5011
|
}
|
|
5012
5012
|
function To(e) {
|
|
5013
|
-
|
|
5014
|
-
let t = e.databaseExecutor;
|
|
5015
|
-
if (t?.engineType) return t.engineType;
|
|
5016
|
-
}
|
|
5017
|
-
return "postgres";
|
|
5013
|
+
return e.getEngineType() ?? "postgres";
|
|
5018
5014
|
}
|
|
5019
5015
|
function Eo(e) {
|
|
5020
5016
|
let t = [];
|
package/dist/adapters/utils.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-CDExg9uP.cjs`);exports.buildTransformedQuery=e.t,exports.calculateQueryComplexity=e.n,exports.formatCubeResponse=e.r,exports.formatErrorResponse=e.i,exports.formatMetaResponse=e.a,exports.formatSqlResponse=e.o,exports.formatSqlString=e.s,exports.generateRequestId=e.c,exports.getDatabaseType=e.l,exports.handleBatchRequest=e.u,exports.handleDiscover=e.d,exports.handleDryRun=e.f,exports.handleLoad=e.p,exports.handleSuggest=e.m,exports.handleValidate=e.h;
|
package/dist/adapters/utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m } from "./utils-
|
|
1
|
+
import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m } from "./utils-DkKcpkx5.js";
|
|
2
2
|
export { p as buildTransformedQuery, c as calculateQueryComplexity, d as formatCubeResponse, a as formatErrorResponse, e as formatMetaResponse, l as formatSqlResponse, f as formatSqlString, t as generateRequestId, o as getDatabaseType, m as handleBatchRequest, n as handleDiscover, r as handleDryRun, u as handleLoad, s as handleSuggest, i as handleValidate };
|
package/dist/client/charts.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as e } from "./chunks/chart-data-table-
|
|
1
|
+
import { t as e } from "./chunks/chart-data-table-BlkFWPhF.js";
|
|
2
2
|
import { t } from "./chunks/chart-funnel-C9JRW79j.js";
|
|
3
3
|
import { a as n, i as r, n as i, o as a } from "./chunks/chart-activity-grid-wR2Twpo7.js";
|
|
4
4
|
import { t as o } from "./chunks/chart-area-e9ysnatQ.js";
|
|
5
|
-
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./chunks/charts-loader-
|
|
5
|
+
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./chunks/charts-loader-BFhQWB_d.js";
|
|
6
6
|
import { a as m, c as h, i as g, n as _, o as v, r as y, s as b, t as x } from "./chunks/lazyChartConfigRegistry-BjhxDaSf.js";
|
|
7
|
-
import { i as S } from "./chunks/utils
|
|
7
|
+
import { i as S } from "./chunks/utils-nCeVL-Hm.js";
|
|
8
8
|
import { t as C } from "./chunks/chart-line-CPhQRMZ7.js";
|
|
9
9
|
import { t as w } from "./chunks/chart-bar-Bx4oKlqo.js";
|
|
10
10
|
import { t as T } from "./chunks/chart-pie-DafSc9sE.js";
|
package/dist/client/chunks/{DashboardEditModal-DenRJiYr.js → DashboardEditModal-kWEk4KJC.js}
RENAMED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { a as e, n as t, o as n, r, s as i, u as a } from "./vendor-
|
|
2
|
-
import { C as o, S as s, T as c, V as l, d as u, w as d } from "./chart-data-table-
|
|
3
|
-
import { C as f, D as p, E as m, O as h, S as g, T as _, a as v, b as y, c as b, l as x, n as S, r as C, s as w, t as T, w as E, y as D } from "./useDebounce-
|
|
1
|
+
import { a as e, n as t, o as n, r, s as i, u as a } from "./vendor-WzXX36hd.js";
|
|
2
|
+
import { C as o, S as s, T as c, V as l, d as u, w as d } from "./chart-data-table-BlkFWPhF.js";
|
|
3
|
+
import { C as f, D as p, E as m, O as h, S as g, T as _, a as v, b as y, c as b, l as x, n as S, r as C, s as w, t as T, w as E, y as D } from "./useDebounce-xfPFr2fi.js";
|
|
4
4
|
import { r as ee } from "./chart-sankey-8nRYnupt.js";
|
|
5
5
|
import { n as O, t as te } from "./providers-DX3Vw5kc.js";
|
|
6
6
|
import { A as k } from "./chart-activity-grid-wR2Twpo7.js";
|
|
7
7
|
import { u as ne } from "./chart-area-e9ysnatQ.js";
|
|
8
|
-
import { a as re, t as A } from "./charts-loader-
|
|
8
|
+
import { a as re, t as A } from "./charts-loader-BFhQWB_d.js";
|
|
9
9
|
import { c as ie } from "./lazyChartConfigRegistry-BjhxDaSf.js";
|
|
10
10
|
import { l as j } from "./retention-UEXlSdZ-.js";
|
|
11
|
-
import { S as M, _ as ae, a as oe, b as N, c as se, g as P, h as F, i as I, l as L, m as R, n as z, o as B, p as V, r as ce, s as H, t as le, v as ue, y as de } from "./FieldSearchModal-
|
|
12
|
-
import { t as U } from "./chart-markdown-
|
|
11
|
+
import { S as M, _ as ae, a as oe, b as N, c as se, g as P, h as F, i as I, l as L, m as R, n as z, o as B, p as V, r as ce, s as H, t as le, v as ue, y as de } from "./FieldSearchModal-rB26lhBD.js";
|
|
12
|
+
import { t as U } from "./chart-markdown-B2X4IwLO.js";
|
|
13
13
|
import { n as fe, t as W } from "./useDirtyStateTracking-CgKZWkel.js";
|
|
14
14
|
import G, { Component as pe, Suspense as me, createContext as he, forwardRef as ge, lazy as _e, startTransition as ve, useCallback as K, useContext as ye, useEffect as q, useImperativeHandle as be, useMemo as J, useRef as Y, useState as X } from "react";
|
|
15
15
|
import { Fragment as Z, jsx as Q, jsxs as $ } from "react/jsx-runtime";
|
|
@@ -2433,7 +2433,7 @@ function qt({ position: e, currentPalette: t, onPaletteChange: n }) {
|
|
|
2433
2433
|
}
|
|
2434
2434
|
//#endregion
|
|
2435
2435
|
//#region src/client/components/AnalysisBuilderLazy.tsx
|
|
2436
|
-
var Jt = _e(() => import("./analysis-builder-
|
|
2436
|
+
var Jt = _e(() => import("./analysis-builder-CdDPUAEU.js")), Yt = ge((e, t) => /* @__PURE__ */ Q(me, {
|
|
2437
2437
|
fallback: /* @__PURE__ */ Q("div", {
|
|
2438
2438
|
className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:py-6",
|
|
2439
2439
|
children: /* @__PURE__ */ Q(ne, {})
|
|
@@ -6675,4 +6675,4 @@ function Er({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initial
|
|
|
6675
6675
|
//#endregion
|
|
6676
6676
|
export { tt as A, yt as C, it as D, at as E, Pe as M, Te as N, nt as O, vt as S, ot as T, Et as _, ir as a, kt as b, gt as c, Ct as d, Ot as f, St as g, Dt as h, Cr as i, ze as j, rt as k, ft as l, bt as m, Tr as n, Xt as o, Tt as p, wr as r, Yt as s, Er as t, At as u, xt as v, ct as w, _t as x, wt as y };
|
|
6677
6677
|
|
|
6678
|
-
//# sourceMappingURL=DashboardEditModal-
|
|
6678
|
+
//# sourceMappingURL=DashboardEditModal-kWEk4KJC.js.map
|