@sisense/sdk-ui 2.31.1 → 2.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/ai.cjs +2 -2
  2. package/dist/ai.js +9 -9
  3. package/dist/analytics-composer/node.cjs +1 -1
  4. package/dist/analytics-composer/node.js +5 -5
  5. package/dist/analytics-composer.cjs +1 -1
  6. package/dist/analytics-composer.js +6 -6
  7. package/dist/apply-styled-options-to-query-CE3WQwRs.cjs +1 -0
  8. package/dist/{apply-styled-options-to-query-lFlufwrB.js → apply-styled-options-to-query-TW3CqofD.js} +209 -207
  9. package/dist/{flow-DHowZLKN.cjs → const-BLmTd3gM.cjs} +1 -1
  10. package/dist/{flow-Cs53Uv2Y.js → const-vJfedJf9.js} +15 -15
  11. package/dist/execute-query-CZOWu-Fh.cjs +1 -0
  12. package/dist/{execute-query-4_76L7Ax.js → execute-query-D-gXk-LI.js} +908 -906
  13. package/dist/index-Boixy7N4.cjs +1 -0
  14. package/dist/{index-C2A2EHoh.cjs → index-C6ytYe3A.cjs} +1 -1
  15. package/dist/{index-eIOG6LP6.js → index-Ct7mA7YB.js} +1 -1
  16. package/dist/{index-CyVSfJ-B.js → index-D3DsBxkp.js} +22 -22
  17. package/dist/{index-DCYw3JUB.js → index-DrI_xqvr.js} +14 -0
  18. package/dist/{index-DTvxJdqZ.cjs → index-UssOwVVX.cjs} +1 -1
  19. package/dist/index.cjs +340 -340
  20. package/dist/index.js +12477 -12340
  21. package/dist/index.umd.js +805 -690
  22. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/utils.d.ts +1 -1
  23. package/dist/packages/sdk-ui/src/domains/dashboarding/types.d.ts +22 -6
  24. package/dist/packages/sdk-ui/src/domains/query-execution/types.d.ts +2 -0
  25. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/components/regular-chart/has-no-results.d.ts +12 -0
  26. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/components/sisense-chart/sisense-chart.d.ts +1 -1
  27. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/components/sisense-chart/types.d.ts +8 -0
  28. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/helpers/use-chart-on-ready.d.ts +38 -0
  29. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/helpers/use-chart-renderer-props.d.ts +1 -0
  30. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/highcharts-based-chart-renderer/highcharts-based-chart-renderer.d.ts +8 -0
  31. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/helpers/on-ready-state.d.ts +17 -0
  32. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/sankey-chart-builder.d.ts +8 -1
  33. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data/comparison.d.ts +22 -0
  34. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data/data.d.ts +17 -0
  35. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data/index.d.ts +4 -0
  36. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data/load-data.d.ts +64 -0
  37. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data/value-colors.d.ts +27 -0
  38. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data-options/data-options.d.ts +30 -0
  39. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/data-options/index.d.ts +1 -0
  40. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/design-options/design-options.d.ts +31 -0
  41. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/design-options/index.d.ts +1 -0
  42. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/kpi-chart-builder.d.ts +9 -0
  43. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/helpers.d.ts +139 -0
  44. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/index.d.ts +1 -0
  45. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-card-styles.d.ts +154 -0
  46. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-card.d.ts +41 -0
  47. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-chart-renderer.d.ts +46 -0
  48. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-comparison.d.ts +60 -0
  49. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-sparkline.d.ts +23 -0
  50. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-title.d.ts +28 -0
  51. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/kpi-value.d.ts +55 -0
  52. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/on-color.d.ts +70 -0
  53. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/sparkline-options.d.ts +51 -0
  54. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/use-auto-fit-font-size.d.ts +98 -0
  55. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/use-element-size.d.ts +26 -0
  56. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/renderer/use-size-tier.d.ts +19 -0
  57. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/kpi-chart/types.d.ts +62 -0
  58. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/types.d.ts +47 -9
  59. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/types.d.ts +9 -0
  60. package/dist/packages/sdk-ui/src/domains/visualizations/components/kpi-chart.d.ts +23 -0
  61. package/dist/packages/sdk-ui/src/domains/visualizations/core/apply-on-ready-to-highcharts-options.d.ts +11 -0
  62. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/types.d.ts +2 -1
  63. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/types.d.ts +108 -2
  64. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/chart-options-service.d.ts +1 -0
  65. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/design-options.d.ts +41 -1
  66. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/types.d.ts +17 -3
  67. package/dist/packages/sdk-ui/src/domains/visualizations/core/highcharts-renderer.d.ts +7 -1
  68. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/query-definition-style-constants.d.ts +1 -1
  69. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/types.d.ts +1 -2
  70. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/use-chart-widget-excel-download.d.ts +1 -1
  71. package/dist/packages/sdk-ui/src/domains/widgets/components/custom-widget/types.d.ts +1 -2
  72. package/dist/packages/sdk-ui/src/domains/widgets/components/filter-widget/filter-widget-dropdown.d.ts +16 -0
  73. package/dist/packages/sdk-ui/src/domains/widgets/components/filter-widget/types.d.ts +17 -23
  74. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/types.d.ts +1 -2
  75. package/dist/packages/sdk-ui/src/domains/widgets/components/widget/types.d.ts +18 -4
  76. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-dashboard-filters.d.ts +447 -447
  77. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-panel-color-format.d.ts +8 -0
  78. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-filters.d.ts +56 -56
  79. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/categorical-labels-style.d.ts +3 -3
  80. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/series-label-affix-style.d.ts +1 -1
  81. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/to-widget-dto-style.d.ts +11 -2
  82. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/types.d.ts +28 -5
  83. package/dist/packages/sdk-ui/src/domains/widgets/hooks/use-fire-on-ready.d.ts +14 -0
  84. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model-translator/to-widget-dto-panels.d.ts +11 -1
  85. package/dist/packages/sdk-ui/src/infra/api/rest-api.d.ts +9 -2
  86. package/dist/packages/sdk-ui/src/infra/app/helpers.d.ts +23 -2
  87. package/dist/packages/sdk-ui/src/infra/app/settings/settings.d.ts +6 -3
  88. package/dist/packages/sdk-ui/src/infra/app/types.d.ts +14 -1
  89. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/de-de.d.ts +14 -0
  90. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/en-us.d.ts +14 -0
  91. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-ar.d.ts +14 -0
  92. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-es.d.ts +14 -0
  93. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/fr-fr.d.ts +14 -0
  94. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/it-it.d.ts +14 -0
  95. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ja-jp.d.ts +14 -0
  96. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ko-kr.d.ts +14 -0
  97. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/nl-nl.d.ts +14 -0
  98. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/pt-br.d.ts +14 -0
  99. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ru-ru.d.ts +14 -0
  100. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/tr-tr.d.ts +14 -0
  101. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/zh-cn.d.ts +14 -0
  102. package/dist/packages/sdk-ui/src/infra/translation/resources/en.d.ts +14 -0
  103. package/dist/packages/sdk-ui/src/infra/translation/resources/index.d.ts +28 -0
  104. package/dist/packages/sdk-ui/src/props.d.ts +77 -5
  105. package/dist/packages/sdk-ui/src/public-api/beta.d.ts +4 -0
  106. package/dist/packages/sdk-ui/src/types.d.ts +296 -5
  107. package/dist/query.cjs +1 -1
  108. package/dist/query.js +3 -3
  109. package/dist/quota-notification-CdcItYEO.cjs +665 -0
  110. package/dist/{quota-notification-mCXOSF0U.js → quota-notification-DJPs09UQ.js} +17392 -15866
  111. package/dist/translations/de-de.cjs +1 -1
  112. package/dist/translations/de-de.js +15 -1
  113. package/dist/translations/en-us.cjs +1 -1
  114. package/dist/translations/en-us.js +1 -1
  115. package/dist/translations/es-ar.cjs +1 -1
  116. package/dist/translations/es-ar.js +15 -1
  117. package/dist/translations/es-es.cjs +1 -1
  118. package/dist/translations/es-es.js +15 -1
  119. package/dist/translations/fr-fr.cjs +1 -1
  120. package/dist/translations/fr-fr.js +17 -3
  121. package/dist/translations/it-it.cjs +1 -1
  122. package/dist/translations/it-it.js +15 -1
  123. package/dist/translations/ja-jp.cjs +1 -1
  124. package/dist/translations/ja-jp.js +15 -1
  125. package/dist/translations/ko-kr.cjs +1 -1
  126. package/dist/translations/ko-kr.js +15 -1
  127. package/dist/translations/nl-nl.cjs +1 -1
  128. package/dist/translations/nl-nl.js +15 -1
  129. package/dist/translations/pt-br.cjs +1 -1
  130. package/dist/translations/pt-br.js +15 -1
  131. package/dist/translations/ru-ru.cjs +1 -1
  132. package/dist/translations/ru-ru.js +15 -1
  133. package/dist/translations/tr-tr.cjs +1 -1
  134. package/dist/translations/tr-tr.js +15 -1
  135. package/dist/translations/zh-cn.cjs +1 -1
  136. package/dist/translations/zh-cn.js +15 -1
  137. package/dist/{types-CzQiy3kx.js → types-B60QjE1r.js} +1 -1
  138. package/dist/{types-pkCiWY_S.cjs → types-BAIldf5u.cjs} +1 -1
  139. package/dist/{use-execute-csv-query-DnTVUxCj.cjs → use-execute-csv-query-DAJqBzR5.cjs} +2 -2
  140. package/dist/{use-execute-csv-query-LtQrd2A4.js → use-execute-csv-query-tLJmsnwg.js} +6 -6
  141. package/dist/{utils-Bqaxp0gq.cjs → utils-BIAAcoFt.cjs} +12 -12
  142. package/dist/{utils-DHLPgrHF.js → utils-D2c9kOce.js} +1544 -1541
  143. package/dist/{widget-composer-CSkR-kBh.js → widget-composer-VWvON_Hi.js} +4 -4
  144. package/dist/{widget-composer-BUq7QhlK.cjs → widget-composer-srdW7lV4.cjs} +1 -1
  145. package/package.json +8 -8
  146. package/dist/apply-styled-options-to-query-siyJXPed.cjs +0 -1
  147. package/dist/execute-query-9rwu12er.cjs +0 -1
  148. package/dist/index-BGVJyEgp.cjs +0 -1
  149. package/dist/quota-notification-C49kSTz5.cjs +0 -550
@@ -1 +1 @@
1
- "use strict";var Nr=Object.defineProperty,xr=Object.defineProperties;var Mr=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var it=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable;var st=(e,t,r)=>t in e?Nr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,f=(e,t)=>{for(var r in t||(t={}))it.call(t,r)&&st(e,r,t[r]);if(fe)for(var r of fe(t))ot.call(t,r)&&st(e,r,t[r]);return e},w=(e,t)=>xr(e,Mr(t));var Oe=(e,t)=>{var r={};for(var n in e)it.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&fe)for(var n of fe(e))t.indexOf(n)<0&&ot.call(e,n)&&(r[n]=e[n]);return r};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("../types-pkCiWY_S.cjs"),c=require("../execute-query-9rwu12er.cjs"),O=require("../apply-styled-options-to-query-siyJXPed.cjs"),Rr=require("../index-C2A2EHoh.cjs");function Ir(e,t){const r=e.length,n=t.length,s=Array.from({length:r+1},(i,o)=>Array.from({length:n+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=n;o++)s[i][o]=Math.min(s[i-1][o]+1,s[i][o-1]+1,s[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return s[r][n]}function Ee(e,t){const r=[];let n="",s=0,i=!1,o=null;for(let a=0;a<e.length;a++){const u=e[a],l=e[a+1];if(i){if(u!==o){n+=u;continue}if(l===o){n+=u+l,a++;continue}i=!1,o=null,n+=u;continue}else{if(u==="'"||u==='"'){i=!0,o=u,n+=u;continue}if("([{".includes(u)&&s++,")]}".includes(u)&&s--,u===t&&s===0){r.push(n.trim()),n="";continue}}n+=u}return n.trim()&&r.push(n.trim()),r}function Lr(e,t){let r=0,n=!1,s=null;for(let i=0;i<e.length;i++){const o=e[i],a=e[i+1];if(n){if(o!==s)continue;if(a===s){i++;continue}n=!1,s=null}else{if(o==="'"||o==='"'){n=!0,s=o;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&r--,o===t&&r===0)return i}}return-1}function Rt(e,t){if(e[t]!=="(")return-1;let r=1,n=t+1,s=!1,i=null;for(;n<e.length;){const o=e[n],a=e[n+1];if(s){if(o!==i){n++;continue}if(a===i){n+=2;continue}s=!1,i=null,n++}else{if(o==="'"||o==='"'){s=!0,i=o,n++;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&--r===0)return n;n++}}return-1}function _r(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Q(e){if(!e||typeof e!="string")throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);const t=e.trim();if(!t)throw new Error("Invalid composeCode: empty string");const r=t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);if(!r)throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);const n=r[1],s=r[2],i=It(s);return{function:n,args:i}}function It(e){return e.trim()?Ee(e,",").map(Lt):[]}function Lt(e){if(!e)throw new Error("Cannot parse empty argument value");if(e==="null")return null;if(e==="undefined")return;if(e==="true")return!0;if(e==="false")return!1;if(e.match(/^-?\d+(\.\d+)?$/))return parseFloat(e);if(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')){const r=e[0];return e.slice(1,-1).replace(new RegExp(`${r}${r}`,"g"),r)}if(e.startsWith("[")&&e.endsWith("]")){const r=e.slice(1,-1).trim();if(!r)return[];const n=It(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?Ur(r):{}}return e.includes("(")&&e.includes(")")?Q(e):(e.startsWith("DM."),e)}function kr(e){const t=Lr(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=_r(e.slice(0,t).trim()),n=Lt(e.slice(t+1).trim());return[r,n]}function Ur(e){if(!e.trim())return{};const t=Ee(e,",").map(kr).filter(([,r])=>r!==null);return Object.fromEntries(t)}class Br{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class _t{constructor(t){this.generateIdentifier=t,this.kv=new Br}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class Pr extends _t{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function Wr(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function zr(e,t){const r=Wr(e);if("find"in r)return r.find(t);const n=r;for(let s=0;s<n.length;s++){const i=n[s];if(t(i))return i}}function G(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function de(e,t){return e.indexOf(t)!==-1}function at(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class Vr{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return zr(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const jr=e=>Object.prototype.toString.call(e).slice(8,-1),kt=e=>typeof e=="undefined",Jr=e=>e===null,se=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Re=e=>se(e)&&Object.keys(e).length===0,_=e=>Array.isArray(e),Yr=e=>typeof e=="string",Kr=e=>typeof e=="number"&&!isNaN(e),Qr=e=>typeof e=="boolean",Gr=e=>e instanceof RegExp,ie=e=>e instanceof Map,oe=e=>e instanceof Set,Ut=e=>jr(e)==="Symbol",Hr=e=>e instanceof Date&&!isNaN(e.valueOf()),Xr=e=>e instanceof Error,ut=e=>typeof e=="number"&&isNaN(e),Zr=e=>Qr(e)||Jr(e)||kt(e)||Kr(e)||Yr(e)||Ut(e),en=e=>typeof e=="bigint",tn=e=>e===1/0||e===-1/0,rn=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),nn=e=>e instanceof URL,Bt=e=>e.replace(/\./g,"\\."),Ce=e=>e.map(String).map(Bt).join("."),ee=e=>{const t=[];let r="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){r+=".",s++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const n=r;return t.push(n),t};function L(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const Pt=[L(kt,"undefined",()=>null,()=>{}),L(en,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),L(Hr,"Date",e=>e.toISOString(),e=>new Date(e)),L(Xr,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r}),L(Gr,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),L(oe,"set",e=>[...e.values()],e=>new Set(e)),L(ie,"map",e=>[...e.entries()],e=>new Map(e)),L(e=>ut(e)||tn(e),"number",e=>ut(e)?"NaN":e>0?"Infinity":"-Infinity",Number),L(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),L(nn,"URL",e=>e.toString(),e=>new URL(e))];function Fe(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const Wt=Fe((e,t)=>Ut(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),sn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),zt=Fe(rn,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=sn[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function Vt(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const jt=Fe(Vt,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return f({},e);const n={};return r.forEach(s=>{n[s]=e[s]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),Jt=Fe((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),on=[jt,Wt,Jt,zt],ct=(e,t)=>{const r=at(on,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=at(Pt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},Yt={};Pt.forEach(e=>{Yt[e.annotation]=e});const an=(e,t,r)=>{if(_(t))switch(t[0]){case"symbol":return Wt.untransform(e,t,r);case"class":return jt.untransform(e,t,r);case"custom":return Jt.untransform(e,t,r);case"typed-array":return zt.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=Yt[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},K=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function Kt(e){if(de(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(de(e,"prototype"))throw new Error("prototype is not allowed as a property");if(de(e,"constructor"))throw new Error("constructor is not allowed as a property")}const un=(e,t)=>{Kt(t);for(let r=0;r<t.length;r++){const n=t[r];if(oe(e))e=K(e,+n);else if(ie(e)){const s=+n,i=+t[++r]==0?"key":"value",o=K(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},Ie=(e,t,r)=>{if(Kt(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(_(n)){const a=+o;n=n[a]}else if(se(n))n=n[o];else if(oe(n)){const a=+o;n=K(n,a)}else if(ie(n)){if(i===t.length-2)break;const u=+o,l=+t[++i]==0?"key":"value",g=K(n,u);switch(l){case"key":n=g;break;case"value":n=n.get(g);break}}}const s=t[t.length-1];if(_(n)?n[+s]=r(n[+s]):se(n)&&(n[s]=r(n[s])),oe(n)){const i=K(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(ie(n)){const i=+t[t.length-2],o=K(n,i);switch(+s==0?"key":"value"){case"key":{const u=r(o);n.set(u,n.get(o)),u!==o&&n.delete(o);break}case"value":{n.set(o,r(n.get(o)));break}}}return e};function Le(e,t,r=[]){if(!e)return;if(!_(e)){G(e,(i,o)=>Le(i,t,[...r,...ee(o)]));return}const[n,s]=e;s&&G(s,(i,o)=>{Le(i,t,[...r,...ee(o)])}),t(n,r)}function cn(e,t,r){return Le(t,(n,s)=>{e=Ie(e,s,i=>an(i,n,r))}),e}function ln(e,t){function r(n,s){const i=un(e,ee(s));n.map(ee).forEach(o=>{e=Ie(e,o,()=>i)})}if(_(t)){const[n,s]=t;n.forEach(i=>{e=Ie(e,ee(i),()=>e)}),s&&G(s,r)}else G(t,r);return e}const fn=(e,t)=>se(e)||_(e)||ie(e)||oe(e)||Vt(e,t);function dn(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function mn(e,t){const r={};let n;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=s;i.length===0?n=o.map(Ce):r[Ce(i)]=o.map(Ce)}),n?Re(r)?[n]:[n,r]:Re(r)?void 0:r}const Qt=(e,t,r,n,s=[],i=[],o=new Map)=>{var b;const a=Zr(e);if(!a){dn(e,s,t);const E=o.get(e);if(E)return n?{transformedValue:null}:E}if(!fn(e,r)){const E=ct(e,r),y=E?{transformedValue:E.value,annotations:[E.type]}:{transformedValue:e};return a||o.set(e,y),y}if(de(i,e))return{transformedValue:null};const u=ct(e,r),l=(b=u==null?void 0:u.value)!=null?b:e,g=_(l)?[]:{},d={};G(l,(E,y)=>{if(y==="__proto__"||y==="constructor"||y==="prototype")throw new Error(`Detected property ${y}. This is a prototype pollution risk, please remove it from your object.`);const F=Qt(E,t,r,n,[...s,y],[...i,e],o);g[y]=F.transformedValue,_(F.annotations)?d[y]=F.annotations:se(F.annotations)&&G(F.annotations,(C,M)=>{d[Bt(y)+"."+M]=C})});const p=Re(d)?{transformedValue:g,annotations:u?[u.type]:void 0}:{transformedValue:g,annotations:u?[u.type,d]:d};return a||o.set(e,p),p};function Gt(e){return Object.prototype.toString.call(e).slice(8,-1)}function lt(e){return Gt(e)==="Array"}function gn(e){if(Gt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function pn(e,t,r,n,s){const i={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function _e(e,t={}){if(lt(e))return e.map(s=>_e(s,t));if(!gn(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(lt(t.props)&&!t.props.includes(i))return s;const o=e[i],a=_e(o,t);return pn(s,i,a,e,t.nonenumerable),s},{})}class h{constructor({dedupe:t=!1}={}){this.classRegistry=new Pr,this.symbolRegistry=new _t(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new Vr,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=Qt(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=w(f({},s.meta),{values:n.annotations}));const i=mn(r,this.dedupe);return i&&(s.meta=w(f({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=_e(r);return n!=null&&n.values&&(s=cn(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=ln(s,n.referentialEqualities)),s}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t))}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register(f({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}h.defaultInstance=new h;h.serialize=h.defaultInstance.serialize.bind(h.defaultInstance);h.deserialize=h.defaultInstance.deserialize.bind(h.defaultInstance);h.stringify=h.defaultInstance.stringify.bind(h.defaultInstance);h.parse=h.defaultInstance.parse.bind(h.defaultInstance);h.registerClass=h.defaultInstance.registerClass.bind(h.defaultInstance);h.registerSymbol=h.defaultInstance.registerSymbol.bind(h.defaultInstance);h.registerCustom=h.defaultInstance.registerCustom.bind(h.defaultInstance);h.allowErrorProps=h.defaultInstance.allowErrorProps.bind(h.defaultInstance);const z=e=>e===void 0?c.Sort.None:e,V=e=>{var t,r;return(r=(t=e.title)!=null?t:e.name)!=null?r:""},yn=e=>new U.JaqlElement(e.metadataItem,e.type),We=e=>new c.DimensionalAttribute(e.name,e.expression,e.type,e.description,z(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,V(e)),ze=e=>new c.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,z(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,V(e)),R=e=>{switch(e.__serializable){case"DimensionalAttribute":return We(e);case"DimensionalLevelAttribute":return ze(e);default:return e}},Ht=e=>new c.DimensionalDimension(e.name,e.expression,e.attributes.map(R),e.dimensions.map(hn),e.type,e.description,z(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?R(e.defaultAttribute):void 0,V(e)),Xt=e=>new c.DimensionalDateDimension(e.name,e.expression,e.description,z(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged,V(e)),hn=e=>{switch(e.__serializable){case"DimensionalDimension":return Ht(e);case"DimensionalDateDimension":return Xt(e);default:return e}},Ve=e=>new c.DimensionalBaseMeasure(e.name,R(e.attribute),e.aggregation,e.format,e.description,z(e.sort),e.dataSource,e.composeCode,V(e)),je=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,n])=>{if(n&&typeof n=="object"&&"__serializable"in n)switch(n.__serializable){case"DimensionalAttribute":return[r,We(n)];case"DimensionalLevelAttribute":return[r,ze(n)];case"DimensionalBaseMeasure":return[r,Ve(n)];case"DimensionalCalculatedMeasure":return[r,je(n)];case"DimensionalMeasureTemplate":return[r,Je(n)];case"MembersFilter":case"LogicalAttributeFilter":case"CascadingFilter":case"ExcludeFilter":case"MeasureFilter":case"RankingFilter":case"MeasureRankingFilter":case"NumericFilter":case"TextFilter":case"DateRangeFilter":case"RelativeDateFilter":case"CustomFilter":return[r,$(n)];default:return[r,n]}return[r,n]}));return new c.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,z(e.sort),e.dataSource,e.composeCode,V(e))},Je=e=>new c.DimensionalMeasureTemplate(e.name,R(e.attribute),e.format,e.description,z(e.sort),e.dataSource,e.composeCode,V(e)),ve=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return Ve(e);case"DimensionalCalculatedMeasure":return je(e);case"DimensionalMeasureTemplate":return Je(e);default:return e}},$=e=>{switch(e.__serializable){case"MembersFilter":return new c.MembersFilter(R(e.attribute),e.members,e.config.backgroundFilter?w(f({},e.config),{backgroundFilter:$(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new c.LogicalAttributeFilter(e.filters.map(r=>$(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new c.CascadingFilter(e._filters.map(r=>$(r)),e.config,e.composeCode);case"ExcludeFilter":return new c.ExcludeFilter($(e.filter),e.input?$(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new c.MeasureFilter(R(e.attribute),ve(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new c.RankingFilter(R(e.attribute),ve(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new c.MeasureRankingFilter(ve(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new c.NumericFilter(R(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new c.TextFilter(R(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new c.DateRangeFilter(R(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new c.RelativeDateFilter(R(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new c.CustomFilter(R(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};h.registerCustom({isApplicable:U.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>yn(e)},"JaqlElement");h.registerCustom({isApplicable:c.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>We(e)},"DimensionalAttribute");h.registerCustom({isApplicable:c.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>ze(e)},"DimensionalLevelAttribute");h.registerCustom({isApplicable:c.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>Ht(e)},"DimensionalDimension");h.registerCustom({isApplicable:c.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>Xt(e)},"DimensionalDateDimension");h.registerCustom({isApplicable:c.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>Ve(e)},"DimensionalBaseMeasure");h.registerCustom({isApplicable:c.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>je(e)},"DimensionalCalculatedMeasure");h.registerCustom({isApplicable:c.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>Je(e)},"DimensionalMeasureTemplate");h.registerCustom({isApplicable:c.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MembersFilter");h.registerCustom({isApplicable:c.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"LogicalAttributeFilter");h.registerCustom({isApplicable:c.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"CascadingFilter");h.registerCustom({isApplicable:c.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"ExcludeFilter");h.registerCustom({isApplicable:c.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MeasureFilter");h.registerCustom({isApplicable:c.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"RankingFilter");h.registerCustom({isApplicable:c.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MeasureRankingFilter");h.registerCustom({isApplicable:c.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"NumericFilter");h.registerCustom({isApplicable:c.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"TextFilter");h.registerCustom({isApplicable:c.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"DateRangeFilter");h.registerCustom({isApplicable:c.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"RelativeDateFilter");h.registerCustom({isApplicable:c.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"CustomFilter");const bn=h,A="DM.";function q(e){return typeof e=="object"&&e!==null}function S(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function Zt(e){return Array.isArray(e)&&e.every(S)}function we(e){return"attribute"in e&&"config"in e}function Z(e){return"left"in e&&"right"in e&&"operator"in e}function Ye(e){return!we(e)&&!Z(e)}function er(e){return q(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function tr(e){return!q(e)||!("column"in e)?!1:S(e.column)}const D=3;function x(e,t,r){if(t.length===0)return;let n=Number.MAX_SAFE_INTEGER,s;for(const i of t){const o=r(i),a=Ir(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const rr="en";function qe(e,t){return e.localeCompare(t,rr,{sensitivity:"accent"})===0}function ft(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,rr,{sensitivity:"accent"})===0}function ae(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,n=new Map,s=new Map;for(const i of e){r.set(i.name,i);const o=[...i.columns].sort((u,l)=>l.name.length-u.name.length);s.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);n.set(i.name,a)}return{sortedTables:t,tableColumnMap:s,tableMap:r,columnMap:n}}function Ke(e,t){if(!e.startsWith(A))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);const r=e.slice(A.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);let n,s;for(const y of t.sortedTables)if(ft(r,y.name+".")){const F=r.slice(y.name.length+1);if(!F)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);n=y,s=F;break}if(!n){const y=r.indexOf(".");if(y===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);const F=r.slice(0,y),C=x(F,t.sortedTables,j=>j.name),M=C&&C.distance<=D?` Did you mean '${C.best.name}'?`:"";throw new Error(`Table '${F}' not found in the data model.${M}`)}const i=t.tableColumnMap.get(n.name);if(!i)throw new Error(`Table '${n.name}' found but has no columns`);let o,a;const u=c.DateLevels.all;for(const y of i){if(qe(s,y.name))return{table:n,column:y};if(!ft(s,y.name+"."))continue;const F=s.slice(y.name.length+1);if(!F)continue;const C=u.includes(F),M=c.isDatetime(y.dataType);if(C){if(M)return{table:n,column:y,level:F};o||(o=y,a=F);continue}M&&!o&&(o=y,a=F)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${n.name}.${o.name}' is not a datetime column`);const y=x(a,u,C=>C),F=y&&y.distance<=D?` Did you mean '${y.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${F}`)}const l=s.indexOf("."),g=l===-1?s:s.slice(0,l),d=x(s,i,y=>y.name),p=d&&d.distance<=D&&!qe(d.best.name,g),b=p?` Did you mean '${d.best.name}'?`:"",E=!p&&s.endsWith(".")&&d!==void 0&&qe(d.best.name,g)?` Use '${g}' without a trailing dot.`:"";throw new Error(`Column '${g}' not found in table '${n.name}'.${b}${E}`)}function En(e,t){const{table:r,column:n,level:s}=Ke(e,t);if(s){if(!c.isDatetime(n.dataType))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is not a datetime column`);const i=c.DateLevels.all;if(!i.includes(s))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=c.DateLevels.dateOnly;if(n.dataType==="date"&&!o.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a date column, not a datetime column`);const a=c.DateLevels.timeOnly;if(n.dataType==="time"&&!a.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a time column, not a date column`)}return{table:r,column:n,level:s}}const te={requireExplicitDateLevel:!0};function Fn(e,t,r,n){if(!(!(n!=null&&n.requireExplicitDateLevel)||r!==void 0||n.inferredDateLevel)&&c.isDatetime(t.dataType))throw new Error(`Date level required for '${e}'. Use '${e}.Years' (or another level such as Months, Days, …).`)}function Te(e,t,r,n){const{table:s,column:i,level:o}=En(e,r);Fn(e,i,o,n);let a=o;if(c.isDatetime(i.dataType)&&a===void 0&&(n!=null&&n.inferredDateLevel)){const u=n.inferredDateLevel,l=c.DateLevels.all;if(!l.includes(u))throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${l.join(", ")}`);const g=`${e}.${u}`,d=c.DateLevels.dateOnly;if(i.dataType==="date"&&!d.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${g}'. Column '${s.name}.${i.name}' is only a date column, not a datetime column`);const p=c.DateLevels.timeOnly;if(i.dataType==="time"&&!p.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${g}'. Column '${s.name}.${i.name}' is only a time column, not a date column`);a=u}return c.createAttributeHelper({expression:i.expression,dataType:i.dataType,granularity:a,format:void 0,sort:void 0,dataSource:t})}function wn(e,t,r){const{column:n,level:s}=Ke(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${A}TableName.ColumnName'`);if(!c.isDatetime(n.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${n.name}' is not a datetime column (got ${n.dataType}).`);return c.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const Tn=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!c.isSortDirection(r))return w(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},An=(e,t,r,n)=>{const s=Tn(e.sortType,n),i=Te(e.column,t,r,te);if(s)return{attribute:i,style:{},error:s};const o=c.omit(e,"column");return{attribute:i,style:o}},Sn=(e,t,r,n)=>typeof e=="string"?{attribute:Te(e,t,r,te)}:er(e)?An(e,t,r,n):{error:w(f({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},nr=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"dimensions",input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`dimensions[${a}]`,input:o};try{const l=Sn(o,r,n,u);if(l.error){i.push(l.error);return}l.attribute&&s.push(l.style!==void 0?{attribute:l.attribute,style:l.style}:{attribute:l.attribute})}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(w(f({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function Qe(e,t){const r=Reflect.get(e,t);if(typeof r!="function")throw new Error(`Function '${t}' not found or is not a function`);return r}function $n(e,t){const r=e.replace("measureFactory.",""),s=Qe(c.measureFactory,r)(...t);if(!Ye(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function Dn(e,t){const r=e.replace("filterFactory.logic.",""),s=Qe(c.logic,r)(...t);if(!Z(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function On(e,t){if(e.startsWith("filterFactory.logic."))return Dn(e,t);const r=e.replace("filterFactory.",""),s=Qe(c.filterFactory,r)(...t);if(!we(s)&&!Z(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function Cn(e,t){const n=e.split(".")[0];if(n==="measureFactory")return $n(e,t);if(n==="filterFactory")return On(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const m=(e,t,r,n)=>f({category:e,minArgs:t,maxArgs:r},n),vn=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),ge={SDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Seconds,argType:"datetime"}),MNDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Minutes,argType:"datetime"}),HDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Hours,argType:"datetime"}),DDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Days,argType:"datetime"}),MDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Months,argType:"datetime"}),QDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Quarters,argType:"datetime"}),YDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Years,argType:"datetime"}),ANYVALUE:m("aggregative",1,1),SUM:m("aggregative",1,2),AVG:m("aggregative",1,2),MIN:m("aggregative",1,2),MAX:m("aggregative",1,2),COUNT:m("aggregative",1,2),DUPCOUNT:m("aggregative",1,1),COUNTDUPLICATES:m("aggregative",1,1),STDEV:m("aggregative",1,2),STDEVP:m("aggregative",1,2),VAR:m("aggregative",1,2),VARP:m("aggregative",1,2),MEDIAN:m("aggregative",1,2),QUARTILE:m("aggregative",2,3),PERCENTILE:m("aggregative",2,3),LOWERWHISKERMAX_IQR:m("aggregative",1,1),LOWERWHISKERMAX_STDEVP:m("aggregative",1,1),UPPERWHISKERMIN_IQR:m("aggregative",1,1),UPPERWHISKERMIN_STDEVP:m("aggregative",1,1),OUTLIERSCOUNT_IQR:m("aggregative",1,1),OUTLIERSCOUNT_STDEVP:m("aggregative",1,1),MODE:m("aggregative",1,1),NOAGGFUNCTION:m("aggregative",1,1),RANK:m("window",0,Number.POSITIVE_INFINITY),RSUM:m("window",1,2),RAVG:m("window",1,2),YTDSUM:m("window",1,1),QTDSUM:m("window",1,1),MTDSUM:m("window",1,1),WTDSUM:m("window",1,1),YTDAVG:m("window",1,1),QTDAVG:m("window",1,1),MTDAVG:m("window",1,1),WTDAVG:m("window",1,1),CONCAT:m("string",2,Number.POSITIVE_INFINITY),LEFT:m("string",2,2),RIGHT:m("string",2,2),ABS:m("scalar",1,1),ACOS:m("scalar",1,1),ASIN:m("scalar",1,1),ATAN:m("scalar",1,1),CEILING:m("scalar",1,1),CONTRIBUTION:m("scalar",1,1),COS:m("scalar",1,1),COT:m("scalar",1,1),DIFFPASTDAY:m("scalar",1,1),DIFFPASTMONTH:m("scalar",1,1),DIFFPASTPERIOD:m("scalar",1,1),DIFFPASTQUARTER:m("scalar",1,1),DIFFPASTWEEK:m("scalar",1,1),DIFFPASTYEAR:m("scalar",1,1),EXP:m("scalar",1,1),FLOOR:m("scalar",1,1),GROWTH:m("growth",1,1),GROWTHPASTMONTH:m("growth",1,1),GROWTHPASTQUARTER:m("growth",1,1),GROWTHPASTWEEK:m("growth",1,1),GROWTHPASTYEAR:m("growth",1,1),GROWTHRATE:m("growth",1,1),LN:m("scalar",1,1),LOG10:m("scalar",1,1),MINUS:m("scalar",1,1),MOD:m("scalar",2,2),QUOTIENT:m("scalar",2,2),PASTDAY:m("date",1,2),PASTMONTH:m("date",1,2),PASTPERIOD:m("date",1,2),PASTQUARTER:m("date",1,2),PASTWEEK:m("date",1,2),PASTYEAR:m("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:m("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:m("scalar",1,1),POWER:m("scalar",2,2),ROUND:m("scalar",2,2),SIN:m("scalar",1,1),SQRT:m("scalar",1,1),TAN:m("scalar",1,1)},qn=Object.keys(ge).filter(e=>ge[e].category==="xdiff");function sr(){return qn}function ir(e){const t=ge[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function Nn(e,t){return e===t?e===1?"1 parameter":`${e} parameters`:t===Number.POSITIVE_INFINITY?e<=1?"any number of parameters":`at least ${e} parameters`:`${e} or ${t} parameters`}const xn=/\[(\w[\w.-]*)\]/g,or=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","PERCENTILE","QUARTILE","STDEV","STDEVP","VAR","VARP","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),Mn=new RegExp(`\\b(${Array.from(or).join("|")})\\s*\\(`,"i");function ar(e){return S(e)?!0:typeof e=="string"&&e.startsWith(A)?!1:q(e)&&"kind"in e?e.kind==="measure":!0}function Rn(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];or.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function In(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function Ln(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const H=e=>e.startsWith("[")?e:`[${e}]`,ur=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function cr(e,t){if(t.length===0)return[];const r=t.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),n=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(n)].map(s=>({functionName:s[1].toUpperCase(),ref1:s[2].trim(),ref2:s[3].trim()}))}function _n(e,t,r){var o,a,u;const n=Object.keys(t),s=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=s===""?"":s.endsWith(" ")?s:`${s} `;return{formula:e,context:t,contextKeys:n,canonicalContextKeys:new Set(n.map(H)),errorPrefix:i,warnUnusedContext:(a=r.warnUnusedContext)!=null?a:!0,errorOnUnusedContext:(u=r.errorOnUnusedContext)!=null?u:!0,schemaIndex:r.schemaIndex,result:{isValid:!0,errors:[],warnings:[],references:[],unusedContextKeys:[]}}}function v(e,t){e.result.errors.push(t),e.result.isValid=!1}const kn=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function Un(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!kn.has(n[1].toUpperCase()));r&&v(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function lr(e,t){const r=e[t];let n=t+1;for(;n<e.length;){const s=e[n],i=e[n+1];if(s!==r){n++;continue}if(i===r){n+=2;continue}return n+1}return e.length}function Bn(e){return Ee(e,",").filter(t=>t.trim().length>0).length}function Pn(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=Rt(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:Bn(o)}),n.push(...fr(o)),i+1}function fr(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=lr(e,r);continue}if(/[A-Za-z_]/.test(n)){const s=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(s,r);r=Pn(e,r,i,t);continue}r++}return t}function Wn(e){const t=fr(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(vn.has(s)){r.has(s)||(r.add(s),v(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=ge[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=Nn(o.minArgs,o.maxArgs);v(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function zn(e){return[...new Set([...e.matchAll(new RegExp(xn.source,"g"))].map(t=>t[1]))]}function Vn(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(H(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${ur(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;v(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function jn(e){if(Mn.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[H(r)])!=null?s:e.context[r];return n!==void 0&&!ar(n)});t.length!==0&&v(e,`${e.errorPrefix}args[1]: ${Ln(Rn(e.formula))}Bracket reference(s) ${In(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function Jn(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(H)),r=e.contextKeys.filter(i=>!t.has(H(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${ur(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?v(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function dt(e,t,r,n){var o;const s=(o=n.context[H(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(A))){ar(s)&&v(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${A}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Ke(s,n.schemaIndex);c.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&v(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):v(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`)}catch(a){const u=a instanceof Error?a.message:"Unknown error";v(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function Yn(e){const t=sr(),r=cr(e.formula,t);for(const n of r){const s=ir(n.functionName);dt(n.ref1,n,s,e),dt(n.ref2,n,s,e)}}function mt(e,t){const r=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(`^${r}$`,"i"),s=[];let i=0;for(;i<e.length;){const o=e[i];if(o==="'"||o==='"'){i=lr(e,i);continue}if(!/[A-Za-z_]/.test(o)){i++;continue}const a=i;for(i++;i<e.length&&/[A-Za-z0-9_]/.test(e[i]);)i++;const u=e.slice(a,i);for(;i<e.length&&/\s/.test(e[i]);)i++;if(e[i]!=="("||!n.test(u))continue;const l=i,g=Rt(e,l);if(g===-1)continue;const d=e.slice(l+1,g);s.push(Ee(d,",").map(p=>p.trim())),i=g+1}return s}function Kn(e){for(const t of mt(e.formula,"PERCENTILE")){const r=t[1];if(r===void 0)continue;const n=Number(r);Number.isNaN(n)||(n<0||n>1)&&v(e,`${e.errorPrefix}args[1]: PERCENTILE second argument must be a decimal in [0, 1], got ${r}`)}for(const t of mt(e.formula,"QUARTILE")){const r=t[1];if(r===void 0)continue;const n=Number(r);Number.isNaN(n)||(!Number.isInteger(n)||n<0||n>4)&&v(e,`${e.errorPrefix}args[1]: QUARTILE second argument must be an integer in [0, 4], got ${r}`)}}function Qn(e,t,r={}){var s;const n=_n(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||v(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(Un(n),Wn(n),Kn(n),n.result.references=zn(e),n.result.references.length===0?(n.result.warnings.push(`${n.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),n.result):n.contextKeys.length===0?(v(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(Vn(n),jn(n),Jn(n),Yn(n),n.result))}function Gn(e,t,r={}){const n=Qn(e,t,r);if(!n.isValid)throw new Error(n.errors.join("; "));n.warnings.length>0&&console.warn("Formula validation warnings:",n.warnings.join("; "))}function Hn(e,t){if(e.length<3||e.length>5)throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);const r=e[1];if(typeof r!="string")throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);const n=r,s=e[2];if(!q(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;Gn(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=Xn(n),a={};for(const[u,l]of Object.entries(i)){const g=`args[2].${u}`;if(S(l))a[`${u}`]=I({data:l,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:g}});else if(typeof l=="string"&&l.startsWith(A)){const d=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,p=o[d];try{a[`${u}`]=Te(l,t.dataSource,t.schemaIndex,p!==void 0?{inferredDateLevel:p}:void 0)}catch(b){const E=b instanceof Error?b.message:"Unknown error";throw new Error(`${g}: ${E}`)}}else if(l&&typeof l=="object"&&"kind"in l)a[`${u}`]=l;else throw new Error(`${g}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${A}...), but got: ${typeof l}`)}return[e[0],e[1],a,...e.slice(3)]}function Xn(e){const t=sr(),r=cr(e,t),n={};for(const s of r){const i=ir(s.functionName);if(i!==void 0)for(const o of[s.ref1,s.ref2]){const a=n[o];if(a!==void 0&&a!==i)throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);n[o]=i}}return n}function dr(e){return e.type===c.MetadataTypes.TextAttribute}function Ge(e){return e.type===c.MetadataTypes.NumericAttribute}function He(e){return e.type===c.MetadataTypes.DateLevel}function Zn(e){return dr(e)||Ge(e)}function ue(e){return e.type===c.MetadataTypes.TextAttribute?"text":e.type===c.MetadataTypes.NumericAttribute?"numeric":e.type===c.MetadataTypes.DateLevel?"date/datetime":"unknown"}function N(e,t){return e===-1?"dataOptions":typeof e=="number"?`dataOptions[${e}]`:t!==void 0?`dataOptions.${e}[${t}]`:`dataOptions.${e}`}function Xe(e,t){return e?t?`${e}.${t}`:e:t!=null?t:""}function es(e){return t=>w(f({},t),{path:Xe(e,t.path)})}function mr(e){return es(`widgets[${e}]`)}function gr(e,t){return e.map(t)}const pr=[c.DateLevels.Years,c.DateLevels.Quarters,c.DateLevels.Months,c.DateLevels.Weeks,c.DateLevels.Days],gt=[c.DateLevels.Years,c.DateLevels.Quarters,c.DateLevels.Months,c.DateLevels.Weeks,c.DateLevels.Days],ts=1,rs=/^\d{4}-\d{2}-\d{2}/,ns=/^\d{6}$/,ss=/^\d{4}$/,is=/T23:59:59(?:\.\d+)?(?:Z)?$/;function X(e){if(typeof e!="string"||!rs.test(e))return!1;const t=Date.parse(e);return Number.isNaN(t)||e.length<10?!1:!Number.isNaN(new Date(e).getTime())}function os(e){return ns.test(e)}function yr(e){return ss.test(e)}function as(e){return is.test(e)}function ke(e){return e instanceof Date?e.toISOString():e}function us(e){const t=e.indexOf("T");return t===-1?e:e.slice(0,t)}function Y(e){switch(e){case c.DateLevels.Years:return"ISO datetime like '2024-01-01T00:00:00' or a 4-digit year like '2024'";case c.DateLevels.Weeks:return"ISO datetime at the start of the week, like '2024-12-30T00:00:00' (not compact keys like '202500')";default:return"ISO datetime like '2024-03-15T00:00:00'"}}function cs(e){const t=e.composeCode;if(t!=null&&t.startsWith(A)){const r=t.slice(A.length),n=r.split("."),s=n[n.length-1];return n.length>=3&&c.DateLevels.all.includes(s)?n.slice(0,-1).join("."):r}return e.expression}const ls=/^\d{1,2}$/;function pt(e,t){const r=e.endsWith(".")?e.slice(0,-1):e;return Xe(r,t)}function fs(e,t,r){if(!Array.isArray(e)||e.length===0)throw new Error(`${r}: members filter requires at least one member for ${t}.`);if(t===c.DateLevels.WeekOfYear)throw new Error(`${pt(r,"args[0]")}: filterFactory.members does not support WeekOfYear. Use ${c.DateLevels.Weeks} with ISO week-start datetimes instead.`);e.forEach((n,s)=>{ds(String(n),t,pt(r,`args[1][${s}]`))})}function ds(e,t,r){if(e==="null"||e==="undefined"||e.trim()==="")throw new Error(`${r}: member must be a non-empty string.`);if(os(e))throw new Error(`${r}: compact week key '${e}' is not valid. Expected ${Y(c.DateLevels.Weeks)}.`);if(ls.test(e))throw new Error(`${r}: bare week number '${e}' is not valid. Expected ${Y(t)}.`);if(t===c.DateLevels.Years){if(yr(e)||X(e))return;throw new Error(`${r}: invalid Years member '${e}'. Expected ${Y(c.DateLevels.Years)}.`)}if(/^\d+$/.test(e))throw new Error(`${r}: numeric member '${e}' is not valid for ${t}. Expected ${Y(t)}.`);if(!X(e))throw new Error(`${r}: invalid datetime member '${e}' for ${t}. Expected ${Y(t)}.`)}function ms(e,t){const r=new Set;for(const n of e){if(r.has(n))throw new Error(`${t}: duplicate member '${n}' after normalization.`);r.add(n)}}function Ze(e,t,r,n){if(t===void 0&&r===void 0)throw new Error(`${n}: date range filter requires at least one of 'from' or 'to' bounds.`);const s=t!==void 0?ke(t):void 0,i=r!==void 0?ke(r):void 0;if(s!==void 0&&yt(s,e,`${n}args[1] (from)`),i!==void 0){const o=`${n}args[2] (to)`;if(yt(i,e,o),as(i))throw new Error(`${o}: 'T23:59:59' is treated as an exclusive upper bound by the query engine and often excludes intended rows. Use the start of the next period instead (e.g. '2026-05-06' or '2026-05-06T00:00:00').`)}if(s!==void 0&&i!==void 0){const o=Date.parse(s),a=Date.parse(i);if(Number.isNaN(o)||Number.isNaN(a))throw new Error(`${n}: unable to compare from/to bounds.`);if(o>a)throw new Error(`${n}: 'from' must be less than or equal to 'to'.`);if(o===a&&s.includes("T")&&i.includes("T"))throw new Error(`${n}: identical from/to datetimes produce an empty half-open range on the backend. Use the next bucket as exclusive 'to' (e.g. next day at midnight).`)}}function yt(e,t,r){if(!X(e))throw new Error(`${r}: invalid date bound '${e}'. Expected ISO date or datetime.`);if(!pr.includes(t)&&e.indexOf("T")===-1)throw new Error(`${r}: ${t} range bounds must include a time component.`)}function pe(e,t){const r=ke(e);return X(r)&&pr.includes(t)?us(r):r}const ht=1e4;function gs(e,t,r,n,s){if(!gt.includes(e))throw new Error(`${s}args[0]: relative date filters do not support ${e}. Supported levels: ${gt.join(", ")}.`);if(!Number.isFinite(t)||!Number.isFinite(r))throw new Error(`${s}: offset and count must be finite numbers.`);if(r<=0)throw new Error(`${s}args[2]: count must be greater than zero.`);if(Math.abs(t)>ht)throw new Error(`${s}args[1]: offset magnitude must be at most ${ht}.`);if(n!==void 0){const i=n instanceof Date?n.toISOString():n;if(!X(i))throw new Error(`${s}args[3]: anchor must be a valid ISO date or datetime.`)}}function Ae(e,t){const r=e[0];if(!r||typeof r!="object"||!("granularity"in r))throw new Error(`${t.pathPrefix}args[0]: Expected date level attribute as first argument.`);return r}function ps(e,t){const r=e[0];if(!r||typeof r!="object"||!He(r))return e;const n=r,s=e[1];if(!Array.isArray(s))throw new Error(`${t.pathPrefix}args[1]: Expected string array of members.`);return fs(s,n.granularity,t.pathPrefix),e}function ys(e,t){const r=Ae(e,t),n=e[1],s=e[2];Ze(r.granularity,n,s,t.pathPrefix);const i=[...e];return n!==void 0&&(i[1]=pe(n,r.granularity)),s!==void 0&&(i[2]=pe(s,r.granularity)),i}function hs(e,t){const r=Ae(e,t),n=e[1];Ze(r.granularity,n,void 0,t.pathPrefix);const s=[...e];return s[1]=pe(n,r.granularity),s}function bs(e,t){const r=Ae(e,t),n=e[1];Ze(r.granularity,void 0,n,t.pathPrefix);const s=[...e];return s[1]=pe(n,r.granularity),s}function Ne(e,t){const r=Ae(e,t),n=e[1],s=e[2],i=e[3];return gs(r.granularity,n,s,i,t.pathPrefix),e}function et(e,t){const r=e[0];if(!r||typeof r!="object"||!("type"in r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function bt(e,t){const r=et(e,t);if(!Zn(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${ue(r)} attribute`);return e}function B(e,t){const r=et(e,t);if(!Ge(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ue(r)} attribute`);return e}function P(e,t){const r=et(e,t);if(!dr(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${ue(r)} attribute`);return e}function Es(e,t){const r=e[0];if(!r||typeof r!="object"||!("attribute"in r))throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);return r}function Fs(e,t){const r=Es(e,t);if(!c.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`);return e}function ws(e,t){const r=e[0];if(!c.MetadataTypes.isAttribute(r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function J(e,t){const r=ws(e,t);if(!Ge(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ue(r)} attribute`);return e}const Ts="FilterRelations (filterFactory.logic.or / filterFactory.logic.and) is not supported inside measureFactory.measuredValue filters. Use plain filters only, or apply logical relations at the query filter level.";function As(e,t){const r=e[1];return Array.isArray(r)&&r.forEach((n,s)=>{if(!(typeof n!="object"||n===null)&&Z(n))throw new Error(`${t.pathPrefix}args[1][${s}]: ${Ts}`)}),e}const Ss={"measureFactory.customFormula":Hn,"measureFactory.measuredValue":As,"measureFactory.sum":J,"measureFactory.average":J,"measureFactory.avg":J,"measureFactory.stdev":J,"measureFactory.variance":J,"measureFactory.median":J,"filterFactory.equals":bt,"filterFactory.doesntEqual":bt,"filterFactory.greaterThan":B,"filterFactory.greaterThanOrEqual":B,"filterFactory.lessThan":B,"filterFactory.lessThanOrEqual":B,"filterFactory.between":B,"filterFactory.betweenNotEqual":B,"filterFactory.numeric":B,"filterFactory.contains":P,"filterFactory.doesntContain":P,"filterFactory.startsWith":P,"filterFactory.doesntStartWith":P,"filterFactory.endsWith":P,"filterFactory.doesntEndWith":P,"filterFactory.like":P,"filterFactory.exclude":Fs,"filterFactory.members":ps,"filterFactory.dateFrom":hs,"filterFactory.dateTo":bs,"filterFactory.dateRange":ys,"filterFactory.dateRelative":Ne,"filterFactory.dateRelativeFrom":Ne,"filterFactory.dateRelativeTo":Ne};function $s(e){return Ss[`${e}`]}const hr={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.stdev":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.variance":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!0,isName:!0},{type:"string",required:!0},{type:"CustomFormulaContext",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.add":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1,isName:!0}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"filterFactory.union":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.intersection":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.exclude":[{type:"Filter",required:!0},{type:"Filter",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.contains":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntContain":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.startsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntStartWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.endsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEndWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.like":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.equals":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEqual":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.isEmpty":[{type:"Attribute",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.isNotEmpty":[{type:"Attribute",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.between":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.betweenNotEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.numeric":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"number",required:!1},{type:"string",required:!1},{type:"number",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.members":[{type:"Attribute",required:!0},{type:"string[]",required:!0},{type:"MembersFilterConfig",required:!1}],"filterFactory.dateFrom":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateTo":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRange":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!1},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelative":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeFrom":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeTo":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisYear":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisMonth":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisQuarter":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.today":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureEquals":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetween":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetweenNotEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.topRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.bottomRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureTopRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBottomRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.cascading":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.logic.and":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}],"filterFactory.logic.or":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}]};function Se(e){return hr[`${e}`]}function Ds(e){const t=Se(e);return t?t.filter(r=>r.required).length:0}function Os(e){const t=Se(e);return t?t.length:0}function Cs(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}/.test(e))return!1;const r=Date.parse(e);if(isNaN(r)||e.length<10)return!1;const n=new Date(e);return!isNaN(n.getTime())}function xe(e,t,r,n,s){if(e.startsWith(A))try{return Te(e,t,r,s)}catch(i){const o=i instanceof Error?i.message:"Unknown error";throw new Error(`${n}: ${o}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`)}function vs(e,t,r,n){if(e.startsWith(A))try{return wn(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid date dimension string '${e}'. Expected format: '${A}TableName.ColumnName'`)}function qs(e){const t=e.data,{argSchema:r,dataSource:n,schemaIndex:s,pathPrefix:i}=e.context,o=i;if(t===void 0){if(r.required)throw new Error(`${o}: Required argument is missing (expected ${r.type})`);return}if(!(t===null&&!r.required))switch(r.type){case"string":if(typeof t!="string")throw new Error(`${o}: Expected string, got ${typeof t}`);return t;case"number":if(typeof t!="number")throw new Error(`${o}: Expected number, got ${typeof t}`);return t;case"boolean":if(typeof t!="boolean")throw new Error(`${o}: Expected boolean, got ${typeof t}`);return t;case"string[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);if(!t.every(a=>typeof a=="string"))throw new Error(`${o}: Expected array of strings, but contains non-string values`);return t;case"number[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);if(!t.every(a=>typeof a=="number"))throw new Error(`${o}: Expected array of numbers, but contains non-number values`);return t;case"Attribute":if(typeof t!="string")throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);return xe(t,n,s,o,te);case"Attribute[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);return t.map((a,u)=>{if(typeof a!="string")throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);return xe(a,n,s,`${o}[${u}]`,te)});case"Measure":case"BaseMeasure":if(!S(t))throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Measure[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);return I({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"Filter":if(!S(t))throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Filter[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return I({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"FilterRelationsNode":if(Array.isArray(t))return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return I({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(S(t))return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);case"DateDimension":if(typeof t!="string")throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);return vs(t,n,s,o);case"LevelAttribute":{if(typeof t!="string")throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);const a=xe(t,n,s,o,te);if(!He(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${ue(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(S(t))return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(Cs(t))return t;throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`)}else{if(t instanceof Date)return t;throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`)}case"string | number":if(typeof t=="string"||typeof t=="number")return t;throw new Error(`${o}: Expected string or number, got ${typeof t}`);case"BaseFilterConfig":case"MembersFilterConfig":case"CustomFormulaContext":case"any":if(t==null&&r.required)throw new Error(`${o}: Required argument is null/undefined`);return t;default:return t}}function I(e){const{data:t}=e,{dataSource:r,schemaIndex:n,pathPrefix:s}=e.context,{function:i,args:o}=t,a=s?`${s}.`:"",u=Se(i);if(!u){const y=Object.keys(hr),F=x(i,y,M=>M),C=F&&F.distance<=D?` Did you mean '${F.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${C}`)}const l=Ds(i),g=Os(i);if(o.length<l)throw new Error(`${a}function: Expected at least ${l} arguments, got ${o.length}`);if(o.length>g)throw new Error(`${a}function: Expected at most ${g} arguments, got ${o.length}`);const d=[],p=[];for(let y=0;y<Math.max(o.length,u.length);y++){const F=u[`${y}`],C=o[`${y}`],M=a?`${a}args[${y}]`:`args[${y}]`;if(C===void 0){F!=null&&F.required&&p.push(`${M}: Missing required argument (expected ${F.type})`);continue}if(!F){p.push(`${M}: Unexpected argument`);continue}try{const j=qs({data:C,context:{dataSource:r,schemaIndex:n,pathPrefix:M,argSchema:F}});d.push(j)}catch(j){const qr=j instanceof Error?j.message:"Unknown error";p.push(qr)}}if(p.length>0){const y=p.join("; ");throw new Error(y)}let b=d;const E=$s(i);if(E)try{b=E(d,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(y){const F=y instanceof Error?y.message:"Unknown validation error";throw new Error(F)}return Cn(i,b)}const Ns="yyyy-MM-dd'T'HH:mm:ss",xs=/^(\d{4})-(\d{2})-(\d{2})/;function Ms(e){const t=xs.exec(e);if(!t)throw new Error(`Invalid datetime member '${e}'.`);const r=Number(t[1]),n=Number(t[2]),s=Number(t[3]);return new Date(r,n-1,s)}function Rs(e,t){if(t===c.DateLevels.Years&&yr(e))return`${e}-01-01T00:00:00`;if(!X(e))throw new Error(`Invalid datetime member '${e}' for ${t}. Expected ${Y(t)}.`);const r=Ms(e);let n;switch(t){case c.DateLevels.Years:n=O.startOfYear(r);break;case c.DateLevels.Quarters:n=O.startOfQuarter(r);break;case c.DateLevels.Months:n=O.startOfMonth(r);break;case c.DateLevels.Weeks:n=O.startOfWeek(r,{weekStartsOn:ts});break;case c.DateLevels.Days:n=O.startOfDay(r);break;default:return e}return Rr.format(n,Ns)}const ye="Unknown error";function tt(e,t="filters"){const{attribute:r,config:n}=e;if(c.isMembersFilter(e)&&c.isLevelAttribute(r)){const{granularity:s}=r,i=e.members.map(u=>Rs(String(u),s));ms(i,t);const o=c.simplifyFilterConfig(n),a=Object.keys(o).length===0?void 0:o;return c.members(r,i,a)}return e}function Is(e){return!Array.isArray(e)&&"operator"in e&&(e.operator==="AND"||e.operator==="OR")&&"left"in e&&"right"in e}function re(e,t){return Array.isArray(e)?e.map((r,n)=>re(r,`${t}[${n}]`)):Is(e)?w(f({},e),{left:re(e.left,`${t}.left`),right:re(e.right,`${t}.right`)}):tt(e,t)}function Ls(e,t){return w(f({},e),{left:re(e.left,`${t}.left`),right:re(e.right,`${t}.right`)})}function _s(e,t,r="filters"){const n=[];let s=[];return e.forEach((i,o)=>{const a=`${r}[${o}]`;if(Z(i)){try{s=O.mergeFiltersOrFilterRelations(Ls(i,a),s)}catch(u){const l=u instanceof Error?u.message:ye;n.push({path:a,input:t[o],message:l})}return}try{s=O.mergeFiltersOrFilterRelations([tt(i,a)],s)}catch(u){const l=u instanceof Error?u.message:ye;n.push({path:a,input:t[o],message:l})}}),{data:n.length>0?null:s,errors:n}}const ks=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];if(t.forEach((a,u)=>{const l={path:`filters[${u}]`,input:a};try{const g=I({data:a,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!Z(g)&&!we(g)?i.push(w(f({},l),{message:"Invalid filter JSON"})):s.push(g)}catch(g){const d=g instanceof Error?g.message:ye;i.push(w(f({},l),{message:d}))}}),i.length>0)return{success:!1,errors:i};const o=_s(s,t);return o.errors.length>0?{success:!1,errors:o.errors}:{success:!0,data:o.data}},ce=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Zt(t)?ks({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"filters",input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Us=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`highlights[${a}]`,input:o};try{const l=I({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});we(l)?s.push(tt(l,`highlights[${a}]`)):i.push(w(f({},u),{message:"Invalid filter JSON"}))}catch(l){const g=l instanceof Error?l.message:ye;i.push(w(f({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}},$e=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Zt(t)?Us({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"highlights",input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Bs=(e,t)=>{if(e&&!c.isSortDirection(e))return w(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Ps=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=I({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return Ye(i)?{success:!0,data:i}:{success:!1,errors:[w(f({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[w(f({},r),{message:o})]}}},Ws=(e,t,r,n)=>{const s=I({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Ye(s))return{style:{},error:w(f({},n),{message:"Invalid measure JSON"})};const i=Bs(e.sortType,n);if(i){const a=c.omit(e,"column");return{measure:s,style:a,error:i}}const o=c.omit(e,"column");return{measure:s,style:o}},zs=(e,t,r,n)=>{if(tr(e))return Ws(e,t,r,n);if(S(e)){const s=Ps(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:w(f({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},br=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"measures",input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`measures[${a}]`,input:o};try{const l=zs(o,r,n,u);if(l.error){i.push(l.error);return}l.measure&&s.push(l.style!==void 0?{measure:l.measure,style:l.style}:{measure:l.measure})}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(w(f({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function me(e){return typeof e=="string"?e:e.title}function Vs(e){const t={};for(const[r,n]of Object.entries(e)){const s={};n.filtersOptions!==void 0&&(s.filtersOptions=n.filtersOptions),n.partialDtoOptions!==void 0&&(s.partialDtoOptions=n.partialDtoOptions),Object.keys(s).length>0&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function Er(e){return typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"?e.toJSON():e}function k(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(k):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,k(r)])):e}function T(e,t,r){const n=e();if(!n.success){const s=r?n.errors.map(r):n.errors;return t.push(...s),null}return n.data}function Fr(e){return!Array.isArray(e)&&"operator"in e&&(e.operator==="AND"||e.operator==="OR")&&"left"in e&&"right"in e}function js(e){return e?Array.isArray(e)?e.flatMap(t=>W(t)):Fr(e)?[...W(e.left),...W(e.right)]:W(e):[]}function W(e){return Array.isArray(e)?e.flatMap(t=>W(t)):Fr(e)?[...W(e.left),...W(e.right)]:[e]}function wr(e,t){if(!He(e))return null;const r=e;return{columnName:cs(r),granularity:r.granularity,source:t}}function Et(e,t){const r=[];return e.forEach((n,s)=>{const i=`${t}[${s}]`;if((c.isMembersFilter(n)||c.isDateRangeFilter(n)||c.isRelativeDateFilter(n))&&c.isLevelAttribute(n.attribute)){const o=wr(n.attribute,i);o&&r.push(o)}}),r}function Ft(e){return e.startsWith("dimensions[")?"Date breakdown":e.startsWith("highlights[")?"Date highlight":"Date filter"}function wt(e,t){if(e.columnName!==t.columnName||e.granularity===t.granularity)return null;const r=Ft(e.source),n=Ft(t.source);return`${r} on ${e.granularity} (${e.source}) conflicts with ${n} on ${t.granularity} (${t.source}) on the same datetime column '${e.columnName}'. Use the same date level for filters/highlights, or for breakdown dimensions.`}function Js(e){var o;const t=[],r=e.dimensions.map((a,u)=>wr(a,`dimensions[${u}]`)).filter(a=>a!==null),n=Et(js(e.filters),"filters"),s=Et((o=e.highlights)!=null?o:[],"highlights"),i=[...n,...s];for(let a=0;a<i.length;a++)for(let u=a+1;u<i.length;u++){const l=wt(i[a],i[u]);l&&t.push({path:"filters",message:l,input:null})}for(let a=0;a<r.length;a++)for(let u=a+1;u<r.length;u++){const l=wt(r[a],r[u]);l&&t.push({path:"dimensions",message:l,input:null})}return t}const Ys=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=ae(n),i=[],o=T(()=>nr({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=T(()=>br({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=T(()=>ce({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let l=null;if(t.highlights&&(l=T(()=>$e({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0)return{success:!1,errors:i};const g=o?O.adaptDimensionsForQuery(o):[],d=Js({dimensions:g,filters:u||[],highlights:l!=null?l:null});return d.length>0?{success:!1,errors:d}:{success:!0,data:f({dataSource:c.convertDataSource(r),dimensions:g,measures:a?O.adaptMeasuresForQuery(a):[],filters:u||[]},l&&{highlights:l})}};function Tt(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function rt(e){const t=[],r=[];return e.forEach((n,s)=>{var d,p,b;const i=Tt(n)?n.column:n,o=Tt(n)?n:void 0,a=()=>Er(i);if(!i.composeCode){r.push({path:`dimensions[${s}]`,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(A)){r.push({path:`dimensions[${s}]`,input:a(),message:`Expected composeCode to start with '${A}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(b=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?b:((d=i.getSort)==null?void 0:d.call(i))!==void 0&&((p=i.getSort)==null?void 0:p.call(i))!==c.Sort.None?i.getSort():void 0,l=o?c.omit(o,"column"):{};if(u!==void 0&&u!==c.Sort.None||o&&Object.keys(l).length>0){const E=f(f({column:i.composeCode},u!==void 0&&u!==c.Sort.None&&{sortType:c.convertSortToSortDirection(u)}),l);t.push(E)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const Ue="Unknown error";function le(e){if(!e)return{success:!0,data:[]};const t=[];if(O.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{path:"filters",input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[Q(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:Ue;return{success:!1,errors:[{path:"filters",input:e,message:`Failed to parse composeCode for FilterRelations: ${s}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){t.push({path:`filters[${s}]`,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=Q(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:Ue;t.push({path:`filters[${s}]`,input:n,message:`Failed to parse composeCode for filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function De(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({path:`highlights[${s}]`,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=Q(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:Ue;r.push({path:`highlights[${s}]`,input:n,message:`Failed to parse composeCode for highlight filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function At(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function nt(e){const t=[],r=[];return e.forEach((n,s)=>{var u,l,g;const i=At(n)?n.column:n,o=At(n)?n:void 0,a=()=>Er(i);if(!i.composeCode){r.push({path:`measures[${s}]`,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const d=Q(i.composeCode),p=(g=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?g:((u=i.getSort)==null?void 0:u.call(i))!==void 0&&((l=i.getSort)==null?void 0:l.call(i))!==c.Sort.None?i.getSort():void 0;if(p!==void 0&&p!==c.Sort.None||o&&Object.keys(c.omit(o,"column")).length>0){const E=o?c.omit(o,"column"):{},y=f(f({column:d},p!==void 0&&p!==c.Sort.None&&{sortType:c.convertSortToSortDirection(p)}),E);t.push(y)}else t.push(d)}catch(d){const p=d instanceof Error?d.message:"Unknown error";r.push({path:`measures[${s}]`,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${p}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function St(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(O.TREND_PREFIX))!=null?s:!1)}function $t(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(O.FORECAST_PREFIX))!=null?s:!1)}function Dt(e){try{const t=Q(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Ks(e){var n,s,i;if(!(e!=null&&e.length))return[];const t=new Set,r=[];for(let o=0;o<e.length;o++){if(t.has(o))continue;const a=e[o];if(St(a)||$t(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",l=`${O.TREND_PREFIX}_${u}`,g=`${O.FORECAST_PREFIX}_${u}`;let d,p,b=o+1;if(b<e.length&&!t.has(b)&&St(e[b])&&e[b].name===l){const E=(s=e[b].composeCode)==null?void 0:s.trim();E&&(d=Dt(E),t.add(b),b++)}if(b<e.length&&!t.has(b)&&$t(e[b])&&e[b].name===g){const E=(i=e[b].composeCode)==null?void 0:i.trim();E&&(p=Dt(E),t.add(b))}d!==void 0||p!==void 0?r.push(f(f({column:a},d&&Object.keys(d).length>0&&{trend:d}),p&&Object.keys(p).length>0&&{forecast:p})):r.push(a)}return r}function Qs(e){const t=[],r=T(()=>rt(e.dimensions||[]),t),n=Ks(e.measures||[]),s=T(()=>nt(n),t),i=T(()=>le(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=T(()=>De(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=f({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:k(a)}}const Tr=new Set(O.ALL_CHART_TYPES.filter(e=>e!=="image")),Ot=Object.freeze([...Tr]),Me=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),Gs={line:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},area:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},bar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},column:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},streamgraph:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},polar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},pie:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},funnel:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},treemap:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},sunburst:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},scatter:{validAxes:new Set(["x","y","breakByPoint","breakByColor","size","seriesToColorMap"]),requiredAxes:[]},table:{validAxes:new Set(["columns"]),requiredAxes:["columns"]},indicator:{validAxes:new Set(["value","secondary","min","max"]),requiredAxes:[]},boxplot:{validAxes:new Set(["category","value","boxType","outliers"]),requiredAxes:["value"]},areamap:{validAxes:new Set(["geo","color"]),requiredAxes:["geo"]},scattermap:{validAxes:new Set(["geo","size","colorBy","details"]),requiredAxes:["geo"]},"calendar-heatmap":{validAxes:new Set(["date","value"]),requiredAxes:["date","value"]},arearange:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]}},Hs=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),Xs=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function Zs(e){const t=Gs[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function Ar(e){return typeof e=="string"&&Tr.has(e)}function ei(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Hs.has(e))return!0;if(Xs.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return q(n)&&"column"in n&&(s=n.column),!(S(n)||s!==void 0&&S(s))}function ti(e){const t=[],r={chartType:"",dataOptions:{}};if(!q(e))return t.push({path:"chartType",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=x("chartType",i,l=>l),a=o&&o.distance<=D?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=D?{[o.best]:e[o.best]}:e;t.push({path:"chartType",input:u,message:`chartType is required.${a}`})}else if(Ar(n))r.chartType=n;else{const i=x(String(n),Ot,u=>u),o=i&&i.distance<=D?` Did you mean '${i.best}'?`:"",a=Ot.slice(0,8).join(", ");t.push({path:"chartType",input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=x("dataOptions",i,l=>l),a=o&&o.distance<=D?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=D?{[o.best]:e[o.best]}:e;t.push({path:"dataOptions",input:u,message:`dataOptions is required.${a}`})}else s!==null&&typeof s=="object"&&(r.dataOptions=s);return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function ri(e){return e.map(({attribute:t,style:r})=>r?f({column:t},r):t)}function ni(e){return e.map(({measure:t,style:r})=>r?f({column:t},r):t)}function si(e){return Array.isArray(e)?e:[e]}function ii(e){return Array.isArray(e)?e:[e]}function oi(e){return Array.isArray(e)?e:[e]}const ai=/^(dimensions|measures|filters|highlights)(\[\d+\])?$/;function Be(e){return t=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0,s=N(e,n);if(ai.test(t.path)||t.path.startsWith("dataOptions"))return w(f({},t),{path:s});const i=t.path.replace(/\[\d+\]$/,"");return w(f({},t),{path:Xe(i,s)})}}function he(e,t,r,n,s){if(r==="dimension"){const a=t?si(t):[];if(a.length===0)return[];const u=T(()=>nr({data:a,context:n}),s,Be(e));return u!==null?ri(u):null}const i=t?ii(t):[];if(i.length===0)return[];const o=T(()=>br({data:i,context:n}),s,Be(e));return o!==null?ni(o):null}const Ct=(e,t)=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0;return w(f({},t),{path:N(e,n)})};function vt(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=rt(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>Ct(e,o))}}const s=nt(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>Ct(e,i))}}function ui(e,t){let r;q(e)&&"column"in e&&(r=e.column);const s=!(S(e)||r!==void 0&&S(r))?"dimension":"measure",i=[],o=he("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function ci(e,t,r,n){const s=[];for(const i of e){const o=T(()=>ui(i,t),r,n);o&&s.push(...o)}return s}function li(e,t,r){if(!e||!q(e))return r.push({path:N(-1),input:e,message:"dataOptions is required"}),null;const n={},{chartType:s}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const d of a)if(!Me.has(d)){const p=x(d,[...Me],E=>E),b=p&&p.distance<=D?` Did you mean '${p.best}'?`:"";p&&p.distance<=D&&u.set(d,p.best),r.push({path:N(d),input:o[d],message:`Unknown dataOptions key '${d}'.${b}`})}const l=s?Zs(s):void 0;if(l){for(const d of a)if(d!=="seriesToColorMap"&&!l.validAxes.has(d)&&Me.has(d)){const p=x(d,[...l.validAxes],y=>y),b=p&&p.distance<=D?` Did you mean '${p.best}'?`:"",E=[...l.validAxes].join(", ");r.push({path:N(d),input:o[d],message:`Axis '${d}' is not valid for chart type '${s}'. Valid axes: ${E}.${b}`})}for(const d of l.requiredAxes)[...u.values()].includes(d)||(!(d in o)||o[d]==null)&&r.push({path:N(d),input:null,message:`Chart type '${s}' requires '${l.requiredAxes.join("' and '")}'. Missing: ${d}.`});s==="indicator"&&(["value","secondary","min","max"].some(b=>b in o&&o[b]!=null)||r.push({path:N(-1),input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),s==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({path:N(-1),input:e,message:"Scatter chart requires at least one of: x, y."}))}if(r.length>i)return null;const g=Object.entries(e);for(const[d,p]of g){if(!p)continue;if(d==="seriesToColorMap"){n[d]=p;continue}if(d==="columns"){n[d]=ci(oi(p),t,r,Be("columns"));continue}const b=ei(d,p,s)?"dimension":"measure",E=he(d,p,b,t,r);if(E!==null){const y=s==="calendar-heatmap"&&d==="value";n[d]=y||!Array.isArray(p)?E[0]:E}}return r.length>i?null:n}function fi(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const Sr=e=>{var y;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=ti(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=ae(s),l=[];let g=li(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},l);if(a==="boxplot"&&g){const F=fi((y=i.styleOptions)==null?void 0:y.subtype),C=F==="iqr"||F==="standardDeviation";g=w(f({},g),{boxType:F,outliersEnabled:C})}let d=null;i.filters&&i.filters.length>0&&(d=T(()=>ce({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),l));let p=null;if(i.highlights&&i.highlights.length>0&&(p=T(()=>$e({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),l)),l.length>0||g===null)return{success:!1,errors:l};if(!Ar(i.chartType))return{success:!1,errors:[{path:"chartType",input:i.chartType,message:"Invalid chartType"}]};const b=i.chartType;return{success:!0,data:f(f(f({dataSet:c.convertDataSource(n),chartType:b,dataOptions:g},i.styleOptions&&{styleOptions:i.styleOptions}),d&&{filters:d}),p&&{highlights:p})}},$r=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{path:"chartType",input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};let r=null;const n=di(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const a=T(()=>le(e.filters),t);s=a!=null?a:void 0}let i;if(e.highlights&&e.highlights.length>0){const a=T(()=>De(e.highlights),t);i=a!=null?a:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=f(f(f({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),s&&s.length>0&&{filters:s}),i&&i.length>0&&{highlights:i});return{success:!0,data:k(o)}};function di(e){const t={},r=[],n=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[s,i]of Object.entries(e)){if(s==="seriesToColorMap"&&i){t[s]=i;continue}if(n.has(s)||i==null){i!=null&&(t[s]=i);continue}const o=Array.isArray(i)?i:[i],a=Array.isArray(i),u=[],l=[];for(let g=0;g<o.length;g++){const d=o[g],b=mi(d)?rt([d]):nt([d]);b.success?u.push(...b.data):b.errors.forEach(E=>{var y;l.push(w(f({},E),{path:N(s,g),input:(y=E.input)!=null?y:d}))})}if(l.length>0){r.push(...l);continue}t[s]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function mi(e){const t=Array.isArray(e)?e[0]:e;if(!t||!q(t))return!0;const r="column"in t&&t.column!=null&&q(t.column)?t.column:t;if("composeCode"in r){const n=r.composeCode;if(typeof n=="string"&&n.startsWith("DM."))return!0;if(typeof n=="string"&&(n.includes("measureFactory")||n.includes("Formula")))return!1}if("type"in r){const n=r.type;if(n==="basemeasure"||n==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const qt=["rows","columns","values","grandTotals"];function gi(e){if(!q(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function pi(e){const t=[],r={dataOptions:{}};if(!q(e))return t.push({path:"dataOptions",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=x("dataOptions",s,u=>u),o=i&&i.distance<=D?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=D?{[i.best]:e[i.best]}:e;t.push({path:"dataOptions",input:a,message:`dataOptions is required.${o}`})}else if(q(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!qt.includes(o)){const a=x(o,[...qt],l=>l),u=a&&a.distance<=D?` Did you mean '${a.best}'?`:"";t.push({path:N(o),input:s[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=s[o];a!=null&&!Array.isArray(a)&&t.push({path:N(o),input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!gi(i)&&t.push({path:N("grandTotals"),input:i,message:"grandTotals must be an object with optional rows?: boolean, columns?: boolean"})}return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function yi(e,t,r){if(!e||typeof e!="object")return r.push({path:N(-1),input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=he(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=he("values",e.values,"measure",t,r);return i&&(n.values=i),e.grandTotals!==void 0&&(n.grandTotals=e.grandTotals),r.length>s?null:n}const Dr=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=pi(t);if(o.length>0)return{success:!1,errors:o};const a=ae(s),u=[],l=yi(i.dataOptions,{dataSource:n,schemaIndex:a},u);let g=null;i.filters&&i.filters.length>0&&(g=T(()=>ce({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let d=null;return i.highlights&&i.highlights.length>0&&(d=T(()=>$e({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||l===null?{success:!1,errors:u}:{success:!0,data:f(f(f({dataSet:c.convertDataSource(n),dataOptions:l},i.styleOptions&&{styleOptions:i.styleOptions}),g&&{filters:g}),d&&{highlights:d})}},Or=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const u of["rows","columns"]){const l=r[u];if(l&&l.length>0){const g=vt(u,l,"dimension");g.success?n[u]=g.data:t.push(...g.errors)}}const s=r.values;if(s&&s.length>0){const u=vt("values",s,"measure");u.success?n.values=u.data:t.push(...u.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const u=T(()=>le(e.filters),t);i=u!=null?u:void 0}let o;if(e.highlights&&e.highlights.length>0){const u=T(()=>De(e.highlights),t);o=u!=null?u:void 0}if(t.length>0)return{success:!1,errors:t};const a=f(f(f({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:k(a)}},hi=(e,t,r)=>{const n=ae(r.tables),s={dataSource:r.dataSource,schemaIndex:n},i=[],o=e&&e.length>0?T(()=>ce({data:e,context:s}),i):void 0,a=t&&t.length>0?T(()=>$e({data:t,context:s}),i):void 0;return i.length>0?{success:!1,errors:i}:{success:!0,data:f(f({},o!=null&&{filters:o}),a!=null&&{highlights:a})}},bi=["widgetType","id","title","description","dataSource","config","highlightSelectionDisabled"],Nt=(e,t,r,n)=>{const{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:l}=e,g=c.omit(e,bi),d=r({data:g,context:t});return d.success?{success:!0,data:n(d.data,{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:l})}:d},Ei=(e,t)=>{const s=e,{dataSet:r}=s,n=Oe(s,["dataSet"]);return f(f(f(f(f(w(f({},n),{widgetType:"chart",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&O.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:t.highlightSelectionDisabled}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Fi=(e,t)=>{const s=e,{dataSet:r}=s,n=Oe(s,["dataSet"]);return f(f(f(f(w(f({},n),{widgetType:"pivot",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&O.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Pe=["chart","pivot","text","custom"],wi=e=>typeof e=="string"&&Pe.includes(e);function Ti(e){if(!q(e))return{path:"widgetType",input:e,message:"Expected an object"};const t=e.widgetType;if(t===void 0){const r=Object.keys(e),n=x("widgetType",r,o=>o),s=n&&n.distance<=D?` Did you mean 'widgetType'? (You may have typed '${n.best}')`:"";return{path:"widgetType",input:n&&n.distance<=D?{[n.best]:e[n.best]}:e,message:`widgetType is required.${s}`}}if(!wi(t)){const r=x(String(t),Pe,i=>i),n=r&&r.distance<=D?` Did you mean '${r.best}'?`:"",s=Pe.join(", ");return{path:"widgetType",input:t,message:`Invalid widgetType '${String(t)}'. Valid types: ${s}${n}`}}return null}const Ai=e=>({path:"id",input:e,message:"Widget id is required"}),Si=e=>!!e.id,Cr=e=>{const{data:t,context:r}=e,n=Ti(t);if(n)return{success:!1,errors:[n]};if(!Si(t))return{success:!1,errors:[Ai(t)]};switch(t.widgetType){case"chart":return Nt(t,r,Sr,Ei);case"pivot":return Nt(t,r,Dr,Fi);case"text":return{success:!0,data:f({widgetType:"text",id:t.id,styleOptions:t.styleOptions},t.config!==void 0&&{config:t.config})};case"custom":{const{id:s,customWidgetType:i,title:o,description:a,dataSource:u,config:l,filters:g,highlights:d,dataOptions:p,styleOptions:b,customOptions:E}=t,y=hi(g,d,r);return y.success?{success:!0,data:f(f(f(f(f(f({widgetType:"custom",id:s,customWidgetType:i,dataSource:u!==void 0?u:c.convertDataSource(r.dataSource),dataOptions:p!=null?p:{}},o!==void 0&&{title:o}),a!==void 0&&{description:a}),l!==void 0&&{config:l}),b!==void 0&&{styleOptions:b}),E!==void 0&&{customOptions:E}),y.data)}:y}default:return{success:!1,errors:[{path:"widgetType",input:t,message:`Unknown widgetType: ${String(t.widgetType)}`}]}}},vr=e=>{const{widgetType:t}=e;switch(t){case"chart":{const r=$r(e);if(!r.success)return r;const n=f(f(f(f(f(w(f({},r.data),{widgetType:"chart",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:me(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:e.highlightSelectionDisabled});return{success:!0,data:k(n)}}case"pivot":{const r=Or(e);if(!r.success)return r;const n=f(f(f(f(w(f({},r.data),{widgetType:"pivot",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:me(e.dataSource)}),e.config!==void 0&&{config:e.config});return{success:!0,data:k(n)}}case"text":return{success:!0,data:f({widgetType:"text",id:e.id,styleOptions:e.styleOptions},e.config!==void 0&&{config:e.config})};case"custom":{const r=[],n=e.filters!==void 0?T(()=>le(e.filters),r):void 0,s=e.highlights!==void 0?T(()=>De(e.highlights),r):void 0;return r.length>0?{success:!1,errors:r}:{success:!0,data:f(f(f(f(f(f(f(f(f({widgetType:"custom",customWidgetType:e.customWidgetType,id:e.id},e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:me(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.dataOptions!==void 0&&{dataOptions:e.dataOptions}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),e.customOptions!==void 0&&{customOptions:e.customOptions}),n&&n.length>0&&{filters:n}),s&&s.length>0&&{highlights:s})}}default:return{success:!1,errors:[{path:"widgetType",input:e,message:`Unknown widgetType: ${String(t)}`}]}}},$i=e=>{const{data:t,context:r}=e,n=[],s=[];Array.isArray(t.widgets)?t.widgets.forEach((a,u)=>{const l=Cr({data:a,context:r});if(!l.success){n.push(...gr(l.errors,mr(u)));return}s.push(l.data)}):n.push({path:"widgets",input:t.widgets,message:"Invalid dashboard JSON. Expected widgets to be an array."});let i=null;if(t.filters&&t.filters.length>0){const a=ae(r.tables);i=T(()=>ce({data:t.filters,context:{dataSource:r.dataSource,schemaIndex:a}}),n)}return n.length>0?{success:!1,errors:n}:{success:!0,data:f(f(f(f(f(f(f(f({widgets:s},t.id!==void 0&&{id:t.id}),t.title!==void 0&&{title:t.title}),i!==null&&{filters:i}),t.layoutOptions!==void 0&&{layoutOptions:t.layoutOptions}),t.config!==void 0&&{config:t.config}),t.defaultDataSource!==void 0&&{defaultDataSource:t.defaultDataSource}),t.styleOptions!==void 0&&{styleOptions:t.styleOptions}),t.widgetsOptions!==void 0&&{widgetsOptions:t.widgetsOptions})}},Di=e=>{const t=[],r=[];e.widgets.forEach((o,a)=>{const u=vr(o);if(!u.success){t.push(...gr(u.errors,mr(a)));return}r.push(u.data)});let n;if(e.filters){const o=T(()=>le(e.filters),t);n=o!=null?o:void 0}if(t.length>0)return{success:!1,errors:t};const s=e.widgetsOptions!==void 0?Vs(e.widgetsOptions):void 0,i=f(f(f(f(f(f(f(f({widgets:r},e.id!==void 0&&{id:e.id}),e.title!==void 0&&{title:e.title}),n&&n.length>0&&{filters:n}),e.layoutOptions!==void 0&&{layoutOptions:e.layoutOptions}),e.config!==void 0&&{config:e.config}),e.defaultDataSource!==void 0&&{defaultDataSource:me(e.defaultDataSource)}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),s!==void 0&&{widgetsOptions:s});return{success:!0,data:k(i)}};function Oi(e){const{filters:t,relations:r}=c.getFilterListAndRelationsJaql(e.filters||[]);return{dataSource:e.dataSource,dimensions:e.dimensions,measures:e.measures,filters:t,filterRelations:r,highlights:e.highlights}}function Ci(e,t,r=!1){const n=Oi(e),s=c.prepareQueryParams(n,t);return c.getJaqlQueryPayload(s,r)}function be(e){const t=e.trim();return t.startsWith(A)?t.slice(A.length):t}function ne(e){var n;const t=Se(e.function);if(t){const s=t.findIndex(i=>i.isName);if(s>=0){const i=e.args[s];if(typeof i=="string"&&i.length>0)return i}}const r=e.args[0];return typeof r=="string"?be(r):S(r)?ne(r):(n=e.function.split(".").pop())!=null?n:e.function}const xt="filterFactory.logic.";function Mt(e){var r;if(e.function.startsWith(xt))return e.function.slice(xt.length);const t=e.args[0];return typeof t=="string"?be(t):S(t)?ne(t):(r=e.function.split(".").pop())!=null?r:e.function}const vi="measureFactory.",qi="filterFactory.",Ni=e=>e.function.startsWith(vi),xi=e=>e.function.startsWith(qi);function Mi(e,t){var n;const r=(n=t==null?void 0:t.role)!=null?n:"filter";return typeof e=="string"?{name:be(e),type:"dimension"}:er(e)?{name:be(e.column),type:"dimension"}:tr(e)?{name:ne(e.column),type:"measure"}:S(e)?Ni(e)?{name:ne(e),type:"measure"}:xi(e)?{name:Mt(e),type:r}:(t==null?void 0:t.role)!==void 0?{name:Mt(e),type:r}:{name:ne(e),type:"measure"}:null}exports.EMPTY_EXPANDED_QUERY_MODEL=U.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=U.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=U.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=U.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=U.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=U.isClientSideWidgetCodeParams;exports.CustomSuperJSON=bn;exports.getQueryElementSummary=Mi;exports.translateChartFromJSON=Sr;exports.translateChartToJSON=$r;exports.translateDashboardFromJSON=$i;exports.translateDashboardToJSON=Di;exports.translatePivotTableFromJSON=Dr;exports.translatePivotTableToJSON=Or;exports.translateQueryFromJSON=Ys;exports.translateQueryToJSON=Qs;exports.translateQueryToJaql=Ci;exports.translateWidgetFromJSON=Cr;exports.translateWidgetToJSON=vr;
1
+ "use strict";var Nr=Object.defineProperty,xr=Object.defineProperties;var Mr=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var it=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable;var st=(e,t,r)=>t in e?Nr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,f=(e,t)=>{for(var r in t||(t={}))it.call(t,r)&&st(e,r,t[r]);if(fe)for(var r of fe(t))ot.call(t,r)&&st(e,r,t[r]);return e},w=(e,t)=>xr(e,Mr(t));var Oe=(e,t)=>{var r={};for(var n in e)it.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&fe)for(var n of fe(e))t.indexOf(n)<0&&ot.call(e,n)&&(r[n]=e[n]);return r};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("../types-BAIldf5u.cjs"),c=require("../execute-query-CZOWu-Fh.cjs"),O=require("../apply-styled-options-to-query-CE3WQwRs.cjs"),Rr=require("../index-C6ytYe3A.cjs");function Ir(e,t){const r=e.length,n=t.length,s=Array.from({length:r+1},(i,o)=>Array.from({length:n+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=n;o++)s[i][o]=Math.min(s[i-1][o]+1,s[i][o-1]+1,s[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return s[r][n]}function Ee(e,t){const r=[];let n="",s=0,i=!1,o=null;for(let a=0;a<e.length;a++){const u=e[a],l=e[a+1];if(i){if(u!==o){n+=u;continue}if(l===o){n+=u+l,a++;continue}i=!1,o=null,n+=u;continue}else{if(u==="'"||u==='"'){i=!0,o=u,n+=u;continue}if("([{".includes(u)&&s++,")]}".includes(u)&&s--,u===t&&s===0){r.push(n.trim()),n="";continue}}n+=u}return n.trim()&&r.push(n.trim()),r}function Lr(e,t){let r=0,n=!1,s=null;for(let i=0;i<e.length;i++){const o=e[i],a=e[i+1];if(n){if(o!==s)continue;if(a===s){i++;continue}n=!1,s=null}else{if(o==="'"||o==='"'){n=!0,s=o;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&r--,o===t&&r===0)return i}}return-1}function Rt(e,t){if(e[t]!=="(")return-1;let r=1,n=t+1,s=!1,i=null;for(;n<e.length;){const o=e[n],a=e[n+1];if(s){if(o!==i){n++;continue}if(a===i){n+=2;continue}s=!1,i=null,n++}else{if(o==="'"||o==='"'){s=!0,i=o,n++;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&--r===0)return n;n++}}return-1}function _r(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Q(e){if(!e||typeof e!="string")throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);const t=e.trim();if(!t)throw new Error("Invalid composeCode: empty string");const r=t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);if(!r)throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);const n=r[1],s=r[2],i=It(s);return{function:n,args:i}}function It(e){return e.trim()?Ee(e,",").map(Lt):[]}function Lt(e){if(!e)throw new Error("Cannot parse empty argument value");if(e==="null")return null;if(e==="undefined")return;if(e==="true")return!0;if(e==="false")return!1;if(e.match(/^-?\d+(\.\d+)?$/))return parseFloat(e);if(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')){const r=e[0];return e.slice(1,-1).replace(new RegExp(`${r}${r}`,"g"),r)}if(e.startsWith("[")&&e.endsWith("]")){const r=e.slice(1,-1).trim();if(!r)return[];const n=It(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?Ur(r):{}}return e.includes("(")&&e.includes(")")?Q(e):(e.startsWith("DM."),e)}function kr(e){const t=Lr(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=_r(e.slice(0,t).trim()),n=Lt(e.slice(t+1).trim());return[r,n]}function Ur(e){if(!e.trim())return{};const t=Ee(e,",").map(kr).filter(([,r])=>r!==null);return Object.fromEntries(t)}class Br{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class _t{constructor(t){this.generateIdentifier=t,this.kv=new Br}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class Pr extends _t{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function Wr(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function zr(e,t){const r=Wr(e);if("find"in r)return r.find(t);const n=r;for(let s=0;s<n.length;s++){const i=n[s];if(t(i))return i}}function G(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function de(e,t){return e.indexOf(t)!==-1}function at(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class Vr{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return zr(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const jr=e=>Object.prototype.toString.call(e).slice(8,-1),kt=e=>typeof e=="undefined",Jr=e=>e===null,se=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Re=e=>se(e)&&Object.keys(e).length===0,_=e=>Array.isArray(e),Yr=e=>typeof e=="string",Kr=e=>typeof e=="number"&&!isNaN(e),Qr=e=>typeof e=="boolean",Gr=e=>e instanceof RegExp,ie=e=>e instanceof Map,oe=e=>e instanceof Set,Ut=e=>jr(e)==="Symbol",Hr=e=>e instanceof Date&&!isNaN(e.valueOf()),Xr=e=>e instanceof Error,ut=e=>typeof e=="number"&&isNaN(e),Zr=e=>Qr(e)||Jr(e)||kt(e)||Kr(e)||Yr(e)||Ut(e),en=e=>typeof e=="bigint",tn=e=>e===1/0||e===-1/0,rn=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),nn=e=>e instanceof URL,Bt=e=>e.replace(/\./g,"\\."),Ce=e=>e.map(String).map(Bt).join("."),ee=e=>{const t=[];let r="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){r+=".",s++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const n=r;return t.push(n),t};function L(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const Pt=[L(kt,"undefined",()=>null,()=>{}),L(en,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),L(Hr,"Date",e=>e.toISOString(),e=>new Date(e)),L(Xr,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r}),L(Gr,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),L(oe,"set",e=>[...e.values()],e=>new Set(e)),L(ie,"map",e=>[...e.entries()],e=>new Map(e)),L(e=>ut(e)||tn(e),"number",e=>ut(e)?"NaN":e>0?"Infinity":"-Infinity",Number),L(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),L(nn,"URL",e=>e.toString(),e=>new URL(e))];function Fe(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const Wt=Fe((e,t)=>Ut(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),sn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),zt=Fe(rn,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=sn[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function Vt(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const jt=Fe(Vt,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return f({},e);const n={};return r.forEach(s=>{n[s]=e[s]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),Jt=Fe((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),on=[jt,Wt,Jt,zt],ct=(e,t)=>{const r=at(on,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=at(Pt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},Yt={};Pt.forEach(e=>{Yt[e.annotation]=e});const an=(e,t,r)=>{if(_(t))switch(t[0]){case"symbol":return Wt.untransform(e,t,r);case"class":return jt.untransform(e,t,r);case"custom":return Jt.untransform(e,t,r);case"typed-array":return zt.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=Yt[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},K=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function Kt(e){if(de(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(de(e,"prototype"))throw new Error("prototype is not allowed as a property");if(de(e,"constructor"))throw new Error("constructor is not allowed as a property")}const un=(e,t)=>{Kt(t);for(let r=0;r<t.length;r++){const n=t[r];if(oe(e))e=K(e,+n);else if(ie(e)){const s=+n,i=+t[++r]==0?"key":"value",o=K(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},Ie=(e,t,r)=>{if(Kt(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(_(n)){const a=+o;n=n[a]}else if(se(n))n=n[o];else if(oe(n)){const a=+o;n=K(n,a)}else if(ie(n)){if(i===t.length-2)break;const u=+o,l=+t[++i]==0?"key":"value",g=K(n,u);switch(l){case"key":n=g;break;case"value":n=n.get(g);break}}}const s=t[t.length-1];if(_(n)?n[+s]=r(n[+s]):se(n)&&(n[s]=r(n[s])),oe(n)){const i=K(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(ie(n)){const i=+t[t.length-2],o=K(n,i);switch(+s==0?"key":"value"){case"key":{const u=r(o);n.set(u,n.get(o)),u!==o&&n.delete(o);break}case"value":{n.set(o,r(n.get(o)));break}}}return e};function Le(e,t,r=[]){if(!e)return;if(!_(e)){G(e,(i,o)=>Le(i,t,[...r,...ee(o)]));return}const[n,s]=e;s&&G(s,(i,o)=>{Le(i,t,[...r,...ee(o)])}),t(n,r)}function cn(e,t,r){return Le(t,(n,s)=>{e=Ie(e,s,i=>an(i,n,r))}),e}function ln(e,t){function r(n,s){const i=un(e,ee(s));n.map(ee).forEach(o=>{e=Ie(e,o,()=>i)})}if(_(t)){const[n,s]=t;n.forEach(i=>{e=Ie(e,ee(i),()=>e)}),s&&G(s,r)}else G(t,r);return e}const fn=(e,t)=>se(e)||_(e)||ie(e)||oe(e)||Vt(e,t);function dn(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function mn(e,t){const r={};let n;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=s;i.length===0?n=o.map(Ce):r[Ce(i)]=o.map(Ce)}),n?Re(r)?[n]:[n,r]:Re(r)?void 0:r}const Qt=(e,t,r,n,s=[],i=[],o=new Map)=>{var b;const a=Zr(e);if(!a){dn(e,s,t);const E=o.get(e);if(E)return n?{transformedValue:null}:E}if(!fn(e,r)){const E=ct(e,r),y=E?{transformedValue:E.value,annotations:[E.type]}:{transformedValue:e};return a||o.set(e,y),y}if(de(i,e))return{transformedValue:null};const u=ct(e,r),l=(b=u==null?void 0:u.value)!=null?b:e,g=_(l)?[]:{},d={};G(l,(E,y)=>{if(y==="__proto__"||y==="constructor"||y==="prototype")throw new Error(`Detected property ${y}. This is a prototype pollution risk, please remove it from your object.`);const F=Qt(E,t,r,n,[...s,y],[...i,e],o);g[y]=F.transformedValue,_(F.annotations)?d[y]=F.annotations:se(F.annotations)&&G(F.annotations,(C,M)=>{d[Bt(y)+"."+M]=C})});const p=Re(d)?{transformedValue:g,annotations:u?[u.type]:void 0}:{transformedValue:g,annotations:u?[u.type,d]:d};return a||o.set(e,p),p};function Gt(e){return Object.prototype.toString.call(e).slice(8,-1)}function lt(e){return Gt(e)==="Array"}function gn(e){if(Gt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function pn(e,t,r,n,s){const i={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function _e(e,t={}){if(lt(e))return e.map(s=>_e(s,t));if(!gn(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(lt(t.props)&&!t.props.includes(i))return s;const o=e[i],a=_e(o,t);return pn(s,i,a,e,t.nonenumerable),s},{})}class h{constructor({dedupe:t=!1}={}){this.classRegistry=new Pr,this.symbolRegistry=new _t(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new Vr,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=Qt(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=w(f({},s.meta),{values:n.annotations}));const i=mn(r,this.dedupe);return i&&(s.meta=w(f({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=_e(r);return n!=null&&n.values&&(s=cn(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=ln(s,n.referentialEqualities)),s}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t))}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register(f({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}h.defaultInstance=new h;h.serialize=h.defaultInstance.serialize.bind(h.defaultInstance);h.deserialize=h.defaultInstance.deserialize.bind(h.defaultInstance);h.stringify=h.defaultInstance.stringify.bind(h.defaultInstance);h.parse=h.defaultInstance.parse.bind(h.defaultInstance);h.registerClass=h.defaultInstance.registerClass.bind(h.defaultInstance);h.registerSymbol=h.defaultInstance.registerSymbol.bind(h.defaultInstance);h.registerCustom=h.defaultInstance.registerCustom.bind(h.defaultInstance);h.allowErrorProps=h.defaultInstance.allowErrorProps.bind(h.defaultInstance);const z=e=>e===void 0?c.Sort.None:e,V=e=>{var t,r;return(r=(t=e.title)!=null?t:e.name)!=null?r:""},yn=e=>new U.JaqlElement(e.metadataItem,e.type),We=e=>new c.DimensionalAttribute(e.name,e.expression,e.type,e.description,z(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,V(e)),ze=e=>new c.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,z(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,V(e)),R=e=>{switch(e.__serializable){case"DimensionalAttribute":return We(e);case"DimensionalLevelAttribute":return ze(e);default:return e}},Ht=e=>new c.DimensionalDimension(e.name,e.expression,e.attributes.map(R),e.dimensions.map(hn),e.type,e.description,z(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?R(e.defaultAttribute):void 0,V(e)),Xt=e=>new c.DimensionalDateDimension(e.name,e.expression,e.description,z(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged,V(e)),hn=e=>{switch(e.__serializable){case"DimensionalDimension":return Ht(e);case"DimensionalDateDimension":return Xt(e);default:return e}},Ve=e=>new c.DimensionalBaseMeasure(e.name,R(e.attribute),e.aggregation,e.format,e.description,z(e.sort),e.dataSource,e.composeCode,V(e)),je=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,n])=>{if(n&&typeof n=="object"&&"__serializable"in n)switch(n.__serializable){case"DimensionalAttribute":return[r,We(n)];case"DimensionalLevelAttribute":return[r,ze(n)];case"DimensionalBaseMeasure":return[r,Ve(n)];case"DimensionalCalculatedMeasure":return[r,je(n)];case"DimensionalMeasureTemplate":return[r,Je(n)];case"MembersFilter":case"LogicalAttributeFilter":case"CascadingFilter":case"ExcludeFilter":case"MeasureFilter":case"RankingFilter":case"MeasureRankingFilter":case"NumericFilter":case"TextFilter":case"DateRangeFilter":case"RelativeDateFilter":case"CustomFilter":return[r,$(n)];default:return[r,n]}return[r,n]}));return new c.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,z(e.sort),e.dataSource,e.composeCode,V(e))},Je=e=>new c.DimensionalMeasureTemplate(e.name,R(e.attribute),e.format,e.description,z(e.sort),e.dataSource,e.composeCode,V(e)),ve=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return Ve(e);case"DimensionalCalculatedMeasure":return je(e);case"DimensionalMeasureTemplate":return Je(e);default:return e}},$=e=>{switch(e.__serializable){case"MembersFilter":return new c.MembersFilter(R(e.attribute),e.members,e.config.backgroundFilter?w(f({},e.config),{backgroundFilter:$(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new c.LogicalAttributeFilter(e.filters.map(r=>$(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new c.CascadingFilter(e._filters.map(r=>$(r)),e.config,e.composeCode);case"ExcludeFilter":return new c.ExcludeFilter($(e.filter),e.input?$(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new c.MeasureFilter(R(e.attribute),ve(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new c.RankingFilter(R(e.attribute),ve(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new c.MeasureRankingFilter(ve(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new c.NumericFilter(R(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new c.TextFilter(R(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new c.DateRangeFilter(R(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new c.RelativeDateFilter(R(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new c.CustomFilter(R(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};h.registerCustom({isApplicable:U.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>yn(e)},"JaqlElement");h.registerCustom({isApplicable:c.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>We(e)},"DimensionalAttribute");h.registerCustom({isApplicable:c.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>ze(e)},"DimensionalLevelAttribute");h.registerCustom({isApplicable:c.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>Ht(e)},"DimensionalDimension");h.registerCustom({isApplicable:c.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>Xt(e)},"DimensionalDateDimension");h.registerCustom({isApplicable:c.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>Ve(e)},"DimensionalBaseMeasure");h.registerCustom({isApplicable:c.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>je(e)},"DimensionalCalculatedMeasure");h.registerCustom({isApplicable:c.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>Je(e)},"DimensionalMeasureTemplate");h.registerCustom({isApplicable:c.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MembersFilter");h.registerCustom({isApplicable:c.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"LogicalAttributeFilter");h.registerCustom({isApplicable:c.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"CascadingFilter");h.registerCustom({isApplicable:c.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"ExcludeFilter");h.registerCustom({isApplicable:c.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MeasureFilter");h.registerCustom({isApplicable:c.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"RankingFilter");h.registerCustom({isApplicable:c.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MeasureRankingFilter");h.registerCustom({isApplicable:c.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"NumericFilter");h.registerCustom({isApplicable:c.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"TextFilter");h.registerCustom({isApplicable:c.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"DateRangeFilter");h.registerCustom({isApplicable:c.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"RelativeDateFilter");h.registerCustom({isApplicable:c.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"CustomFilter");const bn=h,A="DM.";function q(e){return typeof e=="object"&&e!==null}function S(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function Zt(e){return Array.isArray(e)&&e.every(S)}function we(e){return"attribute"in e&&"config"in e}function Z(e){return"left"in e&&"right"in e&&"operator"in e}function Ye(e){return!we(e)&&!Z(e)}function er(e){return q(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function tr(e){return!q(e)||!("column"in e)?!1:S(e.column)}const D=3;function x(e,t,r){if(t.length===0)return;let n=Number.MAX_SAFE_INTEGER,s;for(const i of t){const o=r(i),a=Ir(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const rr="en";function qe(e,t){return e.localeCompare(t,rr,{sensitivity:"accent"})===0}function ft(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,rr,{sensitivity:"accent"})===0}function ae(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,n=new Map,s=new Map;for(const i of e){r.set(i.name,i);const o=[...i.columns].sort((u,l)=>l.name.length-u.name.length);s.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);n.set(i.name,a)}return{sortedTables:t,tableColumnMap:s,tableMap:r,columnMap:n}}function Ke(e,t){if(!e.startsWith(A))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);const r=e.slice(A.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);let n,s;for(const y of t.sortedTables)if(ft(r,y.name+".")){const F=r.slice(y.name.length+1);if(!F)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);n=y,s=F;break}if(!n){const y=r.indexOf(".");if(y===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);const F=r.slice(0,y),C=x(F,t.sortedTables,j=>j.name),M=C&&C.distance<=D?` Did you mean '${C.best.name}'?`:"";throw new Error(`Table '${F}' not found in the data model.${M}`)}const i=t.tableColumnMap.get(n.name);if(!i)throw new Error(`Table '${n.name}' found but has no columns`);let o,a;const u=c.DateLevels.all;for(const y of i){if(qe(s,y.name))return{table:n,column:y};if(!ft(s,y.name+"."))continue;const F=s.slice(y.name.length+1);if(!F)continue;const C=u.includes(F),M=c.isDatetime(y.dataType);if(C){if(M)return{table:n,column:y,level:F};o||(o=y,a=F);continue}M&&!o&&(o=y,a=F)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${n.name}.${o.name}' is not a datetime column`);const y=x(a,u,C=>C),F=y&&y.distance<=D?` Did you mean '${y.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${F}`)}const l=s.indexOf("."),g=l===-1?s:s.slice(0,l),d=x(s,i,y=>y.name),p=d&&d.distance<=D&&!qe(d.best.name,g),b=p?` Did you mean '${d.best.name}'?`:"",E=!p&&s.endsWith(".")&&d!==void 0&&qe(d.best.name,g)?` Use '${g}' without a trailing dot.`:"";throw new Error(`Column '${g}' not found in table '${n.name}'.${b}${E}`)}function En(e,t){const{table:r,column:n,level:s}=Ke(e,t);if(s){if(!c.isDatetime(n.dataType))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is not a datetime column`);const i=c.DateLevels.all;if(!i.includes(s))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=c.DateLevels.dateOnly;if(n.dataType==="date"&&!o.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a date column, not a datetime column`);const a=c.DateLevels.timeOnly;if(n.dataType==="time"&&!a.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a time column, not a date column`)}return{table:r,column:n,level:s}}const te={requireExplicitDateLevel:!0};function Fn(e,t,r,n){if(!(!(n!=null&&n.requireExplicitDateLevel)||r!==void 0||n.inferredDateLevel)&&c.isDatetime(t.dataType))throw new Error(`Date level required for '${e}'. Use '${e}.Years' (or another level such as Months, Days, …).`)}function Te(e,t,r,n){const{table:s,column:i,level:o}=En(e,r);Fn(e,i,o,n);let a=o;if(c.isDatetime(i.dataType)&&a===void 0&&(n!=null&&n.inferredDateLevel)){const u=n.inferredDateLevel,l=c.DateLevels.all;if(!l.includes(u))throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${l.join(", ")}`);const g=`${e}.${u}`,d=c.DateLevels.dateOnly;if(i.dataType==="date"&&!d.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${g}'. Column '${s.name}.${i.name}' is only a date column, not a datetime column`);const p=c.DateLevels.timeOnly;if(i.dataType==="time"&&!p.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${g}'. Column '${s.name}.${i.name}' is only a time column, not a date column`);a=u}return c.createAttributeHelper({expression:i.expression,dataType:i.dataType,granularity:a,format:void 0,sort:void 0,dataSource:t})}function wn(e,t,r){const{column:n,level:s}=Ke(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${A}TableName.ColumnName'`);if(!c.isDatetime(n.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${n.name}' is not a datetime column (got ${n.dataType}).`);return c.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const Tn=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!c.isSortDirection(r))return w(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},An=(e,t,r,n)=>{const s=Tn(e.sortType,n),i=Te(e.column,t,r,te);if(s)return{attribute:i,style:{},error:s};const o=c.omit(e,"column");return{attribute:i,style:o}},Sn=(e,t,r,n)=>typeof e=="string"?{attribute:Te(e,t,r,te)}:er(e)?An(e,t,r,n):{error:w(f({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},nr=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"dimensions",input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`dimensions[${a}]`,input:o};try{const l=Sn(o,r,n,u);if(l.error){i.push(l.error);return}l.attribute&&s.push(l.style!==void 0?{attribute:l.attribute,style:l.style}:{attribute:l.attribute})}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(w(f({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function Qe(e,t){const r=Reflect.get(e,t);if(typeof r!="function")throw new Error(`Function '${t}' not found or is not a function`);return r}function $n(e,t){const r=e.replace("measureFactory.",""),s=Qe(c.measureFactory,r)(...t);if(!Ye(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function Dn(e,t){const r=e.replace("filterFactory.logic.",""),s=Qe(c.logic,r)(...t);if(!Z(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function On(e,t){if(e.startsWith("filterFactory.logic."))return Dn(e,t);const r=e.replace("filterFactory.",""),s=Qe(c.filterFactory,r)(...t);if(!we(s)&&!Z(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function Cn(e,t){const n=e.split(".")[0];if(n==="measureFactory")return $n(e,t);if(n==="filterFactory")return On(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const m=(e,t,r,n)=>f({category:e,minArgs:t,maxArgs:r},n),vn=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),ge={SDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Seconds,argType:"datetime"}),MNDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Minutes,argType:"datetime"}),HDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Hours,argType:"datetime"}),DDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Days,argType:"datetime"}),MDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Months,argType:"datetime"}),QDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Quarters,argType:"datetime"}),YDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Years,argType:"datetime"}),ANYVALUE:m("aggregative",1,1),SUM:m("aggregative",1,2),AVG:m("aggregative",1,2),MIN:m("aggregative",1,2),MAX:m("aggregative",1,2),COUNT:m("aggregative",1,2),DUPCOUNT:m("aggregative",1,1),COUNTDUPLICATES:m("aggregative",1,1),STDEV:m("aggregative",1,2),STDEVP:m("aggregative",1,2),VAR:m("aggregative",1,2),VARP:m("aggregative",1,2),MEDIAN:m("aggregative",1,2),QUARTILE:m("aggregative",2,3),PERCENTILE:m("aggregative",2,3),LOWERWHISKERMAX_IQR:m("aggregative",1,1),LOWERWHISKERMAX_STDEVP:m("aggregative",1,1),UPPERWHISKERMIN_IQR:m("aggregative",1,1),UPPERWHISKERMIN_STDEVP:m("aggregative",1,1),OUTLIERSCOUNT_IQR:m("aggregative",1,1),OUTLIERSCOUNT_STDEVP:m("aggregative",1,1),MODE:m("aggregative",1,1),NOAGGFUNCTION:m("aggregative",1,1),RANK:m("window",0,Number.POSITIVE_INFINITY),RSUM:m("window",1,2),RAVG:m("window",1,2),YTDSUM:m("window",1,1),QTDSUM:m("window",1,1),MTDSUM:m("window",1,1),WTDSUM:m("window",1,1),YTDAVG:m("window",1,1),QTDAVG:m("window",1,1),MTDAVG:m("window",1,1),WTDAVG:m("window",1,1),CONCAT:m("string",2,Number.POSITIVE_INFINITY),LEFT:m("string",2,2),RIGHT:m("string",2,2),ABS:m("scalar",1,1),ACOS:m("scalar",1,1),ASIN:m("scalar",1,1),ATAN:m("scalar",1,1),CEILING:m("scalar",1,1),CONTRIBUTION:m("scalar",1,1),COS:m("scalar",1,1),COT:m("scalar",1,1),DIFFPASTDAY:m("scalar",1,1),DIFFPASTMONTH:m("scalar",1,1),DIFFPASTPERIOD:m("scalar",1,1),DIFFPASTQUARTER:m("scalar",1,1),DIFFPASTWEEK:m("scalar",1,1),DIFFPASTYEAR:m("scalar",1,1),EXP:m("scalar",1,1),FLOOR:m("scalar",1,1),GROWTH:m("growth",1,1),GROWTHPASTMONTH:m("growth",1,1),GROWTHPASTQUARTER:m("growth",1,1),GROWTHPASTWEEK:m("growth",1,1),GROWTHPASTYEAR:m("growth",1,1),GROWTHRATE:m("growth",1,1),LN:m("scalar",1,1),LOG10:m("scalar",1,1),MINUS:m("scalar",1,1),MOD:m("scalar",2,2),QUOTIENT:m("scalar",2,2),PASTDAY:m("date",1,2),PASTMONTH:m("date",1,2),PASTPERIOD:m("date",1,2),PASTQUARTER:m("date",1,2),PASTWEEK:m("date",1,2),PASTYEAR:m("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:m("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:m("scalar",1,1),POWER:m("scalar",2,2),ROUND:m("scalar",2,2),SIN:m("scalar",1,1),SQRT:m("scalar",1,1),TAN:m("scalar",1,1)},qn=Object.keys(ge).filter(e=>ge[e].category==="xdiff");function sr(){return qn}function ir(e){const t=ge[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function Nn(e,t){return e===t?e===1?"1 parameter":`${e} parameters`:t===Number.POSITIVE_INFINITY?e<=1?"any number of parameters":`at least ${e} parameters`:`${e} or ${t} parameters`}const xn=/\[(\w[\w.-]*)\]/g,or=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","PERCENTILE","QUARTILE","STDEV","STDEVP","VAR","VARP","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),Mn=new RegExp(`\\b(${Array.from(or).join("|")})\\s*\\(`,"i");function ar(e){return S(e)?!0:typeof e=="string"&&e.startsWith(A)?!1:q(e)&&"kind"in e?e.kind==="measure":!0}function Rn(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];or.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function In(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function Ln(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const H=e=>e.startsWith("[")?e:`[${e}]`,ur=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function cr(e,t){if(t.length===0)return[];const r=t.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),n=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(n)].map(s=>({functionName:s[1].toUpperCase(),ref1:s[2].trim(),ref2:s[3].trim()}))}function _n(e,t,r){var o,a,u;const n=Object.keys(t),s=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=s===""?"":s.endsWith(" ")?s:`${s} `;return{formula:e,context:t,contextKeys:n,canonicalContextKeys:new Set(n.map(H)),errorPrefix:i,warnUnusedContext:(a=r.warnUnusedContext)!=null?a:!0,errorOnUnusedContext:(u=r.errorOnUnusedContext)!=null?u:!0,schemaIndex:r.schemaIndex,result:{isValid:!0,errors:[],warnings:[],references:[],unusedContextKeys:[]}}}function v(e,t){e.result.errors.push(t),e.result.isValid=!1}const kn=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function Un(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!kn.has(n[1].toUpperCase()));r&&v(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function lr(e,t){const r=e[t];let n=t+1;for(;n<e.length;){const s=e[n],i=e[n+1];if(s!==r){n++;continue}if(i===r){n+=2;continue}return n+1}return e.length}function Bn(e){return Ee(e,",").filter(t=>t.trim().length>0).length}function Pn(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=Rt(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:Bn(o)}),n.push(...fr(o)),i+1}function fr(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=lr(e,r);continue}if(/[A-Za-z_]/.test(n)){const s=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(s,r);r=Pn(e,r,i,t);continue}r++}return t}function Wn(e){const t=fr(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(vn.has(s)){r.has(s)||(r.add(s),v(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=ge[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=Nn(o.minArgs,o.maxArgs);v(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function zn(e){return[...new Set([...e.matchAll(new RegExp(xn.source,"g"))].map(t=>t[1]))]}function Vn(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(H(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${ur(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;v(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function jn(e){if(Mn.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[H(r)])!=null?s:e.context[r];return n!==void 0&&!ar(n)});t.length!==0&&v(e,`${e.errorPrefix}args[1]: ${Ln(Rn(e.formula))}Bracket reference(s) ${In(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function Jn(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(H)),r=e.contextKeys.filter(i=>!t.has(H(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${ur(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?v(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function dt(e,t,r,n){var o;const s=(o=n.context[H(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(A))){ar(s)&&v(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${A}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Ke(s,n.schemaIndex);c.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&v(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):v(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`)}catch(a){const u=a instanceof Error?a.message:"Unknown error";v(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function Yn(e){const t=sr(),r=cr(e.formula,t);for(const n of r){const s=ir(n.functionName);dt(n.ref1,n,s,e),dt(n.ref2,n,s,e)}}function mt(e,t){const r=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(`^${r}$`,"i"),s=[];let i=0;for(;i<e.length;){const o=e[i];if(o==="'"||o==='"'){i=lr(e,i);continue}if(!/[A-Za-z_]/.test(o)){i++;continue}const a=i;for(i++;i<e.length&&/[A-Za-z0-9_]/.test(e[i]);)i++;const u=e.slice(a,i);for(;i<e.length&&/\s/.test(e[i]);)i++;if(e[i]!=="("||!n.test(u))continue;const l=i,g=Rt(e,l);if(g===-1)continue;const d=e.slice(l+1,g);s.push(Ee(d,",").map(p=>p.trim())),i=g+1}return s}function Kn(e){for(const t of mt(e.formula,"PERCENTILE")){const r=t[1];if(r===void 0)continue;const n=Number(r);Number.isNaN(n)||(n<0||n>1)&&v(e,`${e.errorPrefix}args[1]: PERCENTILE second argument must be a decimal in [0, 1], got ${r}`)}for(const t of mt(e.formula,"QUARTILE")){const r=t[1];if(r===void 0)continue;const n=Number(r);Number.isNaN(n)||(!Number.isInteger(n)||n<0||n>4)&&v(e,`${e.errorPrefix}args[1]: QUARTILE second argument must be an integer in [0, 4], got ${r}`)}}function Qn(e,t,r={}){var s;const n=_n(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||v(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(Un(n),Wn(n),Kn(n),n.result.references=zn(e),n.result.references.length===0?(n.result.warnings.push(`${n.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),n.result):n.contextKeys.length===0?(v(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(Vn(n),jn(n),Jn(n),Yn(n),n.result))}function Gn(e,t,r={}){const n=Qn(e,t,r);if(!n.isValid)throw new Error(n.errors.join("; "));n.warnings.length>0&&console.warn("Formula validation warnings:",n.warnings.join("; "))}function Hn(e,t){if(e.length<3||e.length>5)throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);const r=e[1];if(typeof r!="string")throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);const n=r,s=e[2];if(!q(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;Gn(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=Xn(n),a={};for(const[u,l]of Object.entries(i)){const g=`args[2].${u}`;if(S(l))a[`${u}`]=I({data:l,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:g}});else if(typeof l=="string"&&l.startsWith(A)){const d=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,p=o[d];try{a[`${u}`]=Te(l,t.dataSource,t.schemaIndex,p!==void 0?{inferredDateLevel:p}:void 0)}catch(b){const E=b instanceof Error?b.message:"Unknown error";throw new Error(`${g}: ${E}`)}}else if(l&&typeof l=="object"&&"kind"in l)a[`${u}`]=l;else throw new Error(`${g}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${A}...), but got: ${typeof l}`)}return[e[0],e[1],a,...e.slice(3)]}function Xn(e){const t=sr(),r=cr(e,t),n={};for(const s of r){const i=ir(s.functionName);if(i!==void 0)for(const o of[s.ref1,s.ref2]){const a=n[o];if(a!==void 0&&a!==i)throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);n[o]=i}}return n}function dr(e){return e.type===c.MetadataTypes.TextAttribute}function Ge(e){return e.type===c.MetadataTypes.NumericAttribute}function He(e){return e.type===c.MetadataTypes.DateLevel}function Zn(e){return dr(e)||Ge(e)}function ue(e){return e.type===c.MetadataTypes.TextAttribute?"text":e.type===c.MetadataTypes.NumericAttribute?"numeric":e.type===c.MetadataTypes.DateLevel?"date/datetime":"unknown"}function N(e,t){return e===-1?"dataOptions":typeof e=="number"?`dataOptions[${e}]`:t!==void 0?`dataOptions.${e}[${t}]`:`dataOptions.${e}`}function Xe(e,t){return e?t?`${e}.${t}`:e:t!=null?t:""}function es(e){return t=>w(f({},t),{path:Xe(e,t.path)})}function mr(e){return es(`widgets[${e}]`)}function gr(e,t){return e.map(t)}const pr=[c.DateLevels.Years,c.DateLevels.Quarters,c.DateLevels.Months,c.DateLevels.Weeks,c.DateLevels.Days],gt=[c.DateLevels.Years,c.DateLevels.Quarters,c.DateLevels.Months,c.DateLevels.Weeks,c.DateLevels.Days],ts=1,rs=/^\d{4}-\d{2}-\d{2}/,ns=/^\d{6}$/,ss=/^\d{4}$/,is=/T23:59:59(?:\.\d+)?(?:Z)?$/;function X(e){if(typeof e!="string"||!rs.test(e))return!1;const t=Date.parse(e);return Number.isNaN(t)||e.length<10?!1:!Number.isNaN(new Date(e).getTime())}function os(e){return ns.test(e)}function yr(e){return ss.test(e)}function as(e){return is.test(e)}function ke(e){return e instanceof Date?e.toISOString():e}function us(e){const t=e.indexOf("T");return t===-1?e:e.slice(0,t)}function Y(e){switch(e){case c.DateLevels.Years:return"ISO datetime like '2024-01-01T00:00:00' or a 4-digit year like '2024'";case c.DateLevels.Weeks:return"ISO datetime at the start of the week, like '2024-12-30T00:00:00' (not compact keys like '202500')";default:return"ISO datetime like '2024-03-15T00:00:00'"}}function cs(e){const t=e.composeCode;if(t!=null&&t.startsWith(A)){const r=t.slice(A.length),n=r.split("."),s=n[n.length-1];return n.length>=3&&c.DateLevels.all.includes(s)?n.slice(0,-1).join("."):r}return e.expression}const ls=/^\d{1,2}$/;function pt(e,t){const r=e.endsWith(".")?e.slice(0,-1):e;return Xe(r,t)}function fs(e,t,r){if(!Array.isArray(e)||e.length===0)throw new Error(`${r}: members filter requires at least one member for ${t}.`);if(t===c.DateLevels.WeekOfYear)throw new Error(`${pt(r,"args[0]")}: filterFactory.members does not support WeekOfYear. Use ${c.DateLevels.Weeks} with ISO week-start datetimes instead.`);e.forEach((n,s)=>{ds(String(n),t,pt(r,`args[1][${s}]`))})}function ds(e,t,r){if(e==="null"||e==="undefined"||e.trim()==="")throw new Error(`${r}: member must be a non-empty string.`);if(os(e))throw new Error(`${r}: compact week key '${e}' is not valid. Expected ${Y(c.DateLevels.Weeks)}.`);if(ls.test(e))throw new Error(`${r}: bare week number '${e}' is not valid. Expected ${Y(t)}.`);if(t===c.DateLevels.Years){if(yr(e)||X(e))return;throw new Error(`${r}: invalid Years member '${e}'. Expected ${Y(c.DateLevels.Years)}.`)}if(/^\d+$/.test(e))throw new Error(`${r}: numeric member '${e}' is not valid for ${t}. Expected ${Y(t)}.`);if(!X(e))throw new Error(`${r}: invalid datetime member '${e}' for ${t}. Expected ${Y(t)}.`)}function ms(e,t){const r=new Set;for(const n of e){if(r.has(n))throw new Error(`${t}: duplicate member '${n}' after normalization.`);r.add(n)}}function Ze(e,t,r,n){if(t===void 0&&r===void 0)throw new Error(`${n}: date range filter requires at least one of 'from' or 'to' bounds.`);const s=t!==void 0?ke(t):void 0,i=r!==void 0?ke(r):void 0;if(s!==void 0&&yt(s,e,`${n}args[1] (from)`),i!==void 0){const o=`${n}args[2] (to)`;if(yt(i,e,o),as(i))throw new Error(`${o}: 'T23:59:59' is treated as an exclusive upper bound by the query engine and often excludes intended rows. Use the start of the next period instead (e.g. '2026-05-06' or '2026-05-06T00:00:00').`)}if(s!==void 0&&i!==void 0){const o=Date.parse(s),a=Date.parse(i);if(Number.isNaN(o)||Number.isNaN(a))throw new Error(`${n}: unable to compare from/to bounds.`);if(o>a)throw new Error(`${n}: 'from' must be less than or equal to 'to'.`);if(o===a&&s.includes("T")&&i.includes("T"))throw new Error(`${n}: identical from/to datetimes produce an empty half-open range on the backend. Use the next bucket as exclusive 'to' (e.g. next day at midnight).`)}}function yt(e,t,r){if(!X(e))throw new Error(`${r}: invalid date bound '${e}'. Expected ISO date or datetime.`);if(!pr.includes(t)&&e.indexOf("T")===-1)throw new Error(`${r}: ${t} range bounds must include a time component.`)}function pe(e,t){const r=ke(e);return X(r)&&pr.includes(t)?us(r):r}const ht=1e4;function gs(e,t,r,n,s){if(!gt.includes(e))throw new Error(`${s}args[0]: relative date filters do not support ${e}. Supported levels: ${gt.join(", ")}.`);if(!Number.isFinite(t)||!Number.isFinite(r))throw new Error(`${s}: offset and count must be finite numbers.`);if(r<=0)throw new Error(`${s}args[2]: count must be greater than zero.`);if(Math.abs(t)>ht)throw new Error(`${s}args[1]: offset magnitude must be at most ${ht}.`);if(n!==void 0){const i=n instanceof Date?n.toISOString():n;if(!X(i))throw new Error(`${s}args[3]: anchor must be a valid ISO date or datetime.`)}}function Ae(e,t){const r=e[0];if(!r||typeof r!="object"||!("granularity"in r))throw new Error(`${t.pathPrefix}args[0]: Expected date level attribute as first argument.`);return r}function ps(e,t){const r=e[0];if(!r||typeof r!="object"||!He(r))return e;const n=r,s=e[1];if(!Array.isArray(s))throw new Error(`${t.pathPrefix}args[1]: Expected string array of members.`);return fs(s,n.granularity,t.pathPrefix),e}function ys(e,t){const r=Ae(e,t),n=e[1],s=e[2];Ze(r.granularity,n,s,t.pathPrefix);const i=[...e];return n!==void 0&&(i[1]=pe(n,r.granularity)),s!==void 0&&(i[2]=pe(s,r.granularity)),i}function hs(e,t){const r=Ae(e,t),n=e[1];Ze(r.granularity,n,void 0,t.pathPrefix);const s=[...e];return s[1]=pe(n,r.granularity),s}function bs(e,t){const r=Ae(e,t),n=e[1];Ze(r.granularity,void 0,n,t.pathPrefix);const s=[...e];return s[1]=pe(n,r.granularity),s}function Ne(e,t){const r=Ae(e,t),n=e[1],s=e[2],i=e[3];return gs(r.granularity,n,s,i,t.pathPrefix),e}function et(e,t){const r=e[0];if(!r||typeof r!="object"||!("type"in r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function bt(e,t){const r=et(e,t);if(!Zn(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${ue(r)} attribute`);return e}function B(e,t){const r=et(e,t);if(!Ge(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ue(r)} attribute`);return e}function P(e,t){const r=et(e,t);if(!dr(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${ue(r)} attribute`);return e}function Es(e,t){const r=e[0];if(!r||typeof r!="object"||!("attribute"in r))throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);return r}function Fs(e,t){const r=Es(e,t);if(!c.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`);return e}function ws(e,t){const r=e[0];if(!c.MetadataTypes.isAttribute(r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function J(e,t){const r=ws(e,t);if(!Ge(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ue(r)} attribute`);return e}const Ts="FilterRelations (filterFactory.logic.or / filterFactory.logic.and) is not supported inside measureFactory.measuredValue filters. Use plain filters only, or apply logical relations at the query filter level.";function As(e,t){const r=e[1];return Array.isArray(r)&&r.forEach((n,s)=>{if(!(typeof n!="object"||n===null)&&Z(n))throw new Error(`${t.pathPrefix}args[1][${s}]: ${Ts}`)}),e}const Ss={"measureFactory.customFormula":Hn,"measureFactory.measuredValue":As,"measureFactory.sum":J,"measureFactory.average":J,"measureFactory.avg":J,"measureFactory.stdev":J,"measureFactory.variance":J,"measureFactory.median":J,"filterFactory.equals":bt,"filterFactory.doesntEqual":bt,"filterFactory.greaterThan":B,"filterFactory.greaterThanOrEqual":B,"filterFactory.lessThan":B,"filterFactory.lessThanOrEqual":B,"filterFactory.between":B,"filterFactory.betweenNotEqual":B,"filterFactory.numeric":B,"filterFactory.contains":P,"filterFactory.doesntContain":P,"filterFactory.startsWith":P,"filterFactory.doesntStartWith":P,"filterFactory.endsWith":P,"filterFactory.doesntEndWith":P,"filterFactory.like":P,"filterFactory.exclude":Fs,"filterFactory.members":ps,"filterFactory.dateFrom":hs,"filterFactory.dateTo":bs,"filterFactory.dateRange":ys,"filterFactory.dateRelative":Ne,"filterFactory.dateRelativeFrom":Ne,"filterFactory.dateRelativeTo":Ne};function $s(e){return Ss[`${e}`]}const hr={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.stdev":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.variance":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!0,isName:!0},{type:"string",required:!0},{type:"CustomFormulaContext",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.add":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1,isName:!0}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"filterFactory.union":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.intersection":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.exclude":[{type:"Filter",required:!0},{type:"Filter",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.contains":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntContain":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.startsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntStartWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.endsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEndWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.like":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.equals":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEqual":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.isEmpty":[{type:"Attribute",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.isNotEmpty":[{type:"Attribute",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.between":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.betweenNotEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.numeric":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"number",required:!1},{type:"string",required:!1},{type:"number",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.members":[{type:"Attribute",required:!0},{type:"string[]",required:!0},{type:"MembersFilterConfig",required:!1}],"filterFactory.dateFrom":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateTo":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRange":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!1},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelative":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeFrom":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeTo":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisYear":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisMonth":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisQuarter":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.today":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureEquals":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetween":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetweenNotEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.topRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.bottomRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureTopRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBottomRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.cascading":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.logic.and":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}],"filterFactory.logic.or":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}]};function Se(e){return hr[`${e}`]}function Ds(e){const t=Se(e);return t?t.filter(r=>r.required).length:0}function Os(e){const t=Se(e);return t?t.length:0}function Cs(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}/.test(e))return!1;const r=Date.parse(e);if(isNaN(r)||e.length<10)return!1;const n=new Date(e);return!isNaN(n.getTime())}function xe(e,t,r,n,s){if(e.startsWith(A))try{return Te(e,t,r,s)}catch(i){const o=i instanceof Error?i.message:"Unknown error";throw new Error(`${n}: ${o}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`)}function vs(e,t,r,n){if(e.startsWith(A))try{return wn(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid date dimension string '${e}'. Expected format: '${A}TableName.ColumnName'`)}function qs(e){const t=e.data,{argSchema:r,dataSource:n,schemaIndex:s,pathPrefix:i}=e.context,o=i;if(t===void 0){if(r.required)throw new Error(`${o}: Required argument is missing (expected ${r.type})`);return}if(!(t===null&&!r.required))switch(r.type){case"string":if(typeof t!="string")throw new Error(`${o}: Expected string, got ${typeof t}`);return t;case"number":if(typeof t!="number")throw new Error(`${o}: Expected number, got ${typeof t}`);return t;case"boolean":if(typeof t!="boolean")throw new Error(`${o}: Expected boolean, got ${typeof t}`);return t;case"string[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);if(!t.every(a=>typeof a=="string"))throw new Error(`${o}: Expected array of strings, but contains non-string values`);return t;case"number[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);if(!t.every(a=>typeof a=="number"))throw new Error(`${o}: Expected array of numbers, but contains non-number values`);return t;case"Attribute":if(typeof t!="string")throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);return xe(t,n,s,o,te);case"Attribute[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);return t.map((a,u)=>{if(typeof a!="string")throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);return xe(a,n,s,`${o}[${u}]`,te)});case"Measure":case"BaseMeasure":if(!S(t))throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Measure[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);return I({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"Filter":if(!S(t))throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Filter[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return I({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"FilterRelationsNode":if(Array.isArray(t))return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return I({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(S(t))return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);case"DateDimension":if(typeof t!="string")throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);return vs(t,n,s,o);case"LevelAttribute":{if(typeof t!="string")throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);const a=xe(t,n,s,o,te);if(!He(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${ue(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(S(t))return I({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(Cs(t))return t;throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`)}else{if(t instanceof Date)return t;throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`)}case"string | number":if(typeof t=="string"||typeof t=="number")return t;throw new Error(`${o}: Expected string or number, got ${typeof t}`);case"BaseFilterConfig":case"MembersFilterConfig":case"CustomFormulaContext":case"any":if(t==null&&r.required)throw new Error(`${o}: Required argument is null/undefined`);return t;default:return t}}function I(e){const{data:t}=e,{dataSource:r,schemaIndex:n,pathPrefix:s}=e.context,{function:i,args:o}=t,a=s?`${s}.`:"",u=Se(i);if(!u){const y=Object.keys(hr),F=x(i,y,M=>M),C=F&&F.distance<=D?` Did you mean '${F.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${C}`)}const l=Ds(i),g=Os(i);if(o.length<l)throw new Error(`${a}function: Expected at least ${l} arguments, got ${o.length}`);if(o.length>g)throw new Error(`${a}function: Expected at most ${g} arguments, got ${o.length}`);const d=[],p=[];for(let y=0;y<Math.max(o.length,u.length);y++){const F=u[`${y}`],C=o[`${y}`],M=a?`${a}args[${y}]`:`args[${y}]`;if(C===void 0){F!=null&&F.required&&p.push(`${M}: Missing required argument (expected ${F.type})`);continue}if(!F){p.push(`${M}: Unexpected argument`);continue}try{const j=qs({data:C,context:{dataSource:r,schemaIndex:n,pathPrefix:M,argSchema:F}});d.push(j)}catch(j){const qr=j instanceof Error?j.message:"Unknown error";p.push(qr)}}if(p.length>0){const y=p.join("; ");throw new Error(y)}let b=d;const E=$s(i);if(E)try{b=E(d,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(y){const F=y instanceof Error?y.message:"Unknown validation error";throw new Error(F)}return Cn(i,b)}const Ns="yyyy-MM-dd'T'HH:mm:ss",xs=/^(\d{4})-(\d{2})-(\d{2})/;function Ms(e){const t=xs.exec(e);if(!t)throw new Error(`Invalid datetime member '${e}'.`);const r=Number(t[1]),n=Number(t[2]),s=Number(t[3]);return new Date(r,n-1,s)}function Rs(e,t){if(t===c.DateLevels.Years&&yr(e))return`${e}-01-01T00:00:00`;if(!X(e))throw new Error(`Invalid datetime member '${e}' for ${t}. Expected ${Y(t)}.`);const r=Ms(e);let n;switch(t){case c.DateLevels.Years:n=O.startOfYear(r);break;case c.DateLevels.Quarters:n=O.startOfQuarter(r);break;case c.DateLevels.Months:n=O.startOfMonth(r);break;case c.DateLevels.Weeks:n=O.startOfWeek(r,{weekStartsOn:ts});break;case c.DateLevels.Days:n=O.startOfDay(r);break;default:return e}return Rr.format(n,Ns)}const ye="Unknown error";function tt(e,t="filters"){const{attribute:r,config:n}=e;if(c.isMembersFilter(e)&&c.isLevelAttribute(r)){const{granularity:s}=r,i=e.members.map(u=>Rs(String(u),s));ms(i,t);const o=c.simplifyFilterConfig(n),a=Object.keys(o).length===0?void 0:o;return c.members(r,i,a)}return e}function Is(e){return!Array.isArray(e)&&"operator"in e&&(e.operator==="AND"||e.operator==="OR")&&"left"in e&&"right"in e}function re(e,t){return Array.isArray(e)?e.map((r,n)=>re(r,`${t}[${n}]`)):Is(e)?w(f({},e),{left:re(e.left,`${t}.left`),right:re(e.right,`${t}.right`)}):tt(e,t)}function Ls(e,t){return w(f({},e),{left:re(e.left,`${t}.left`),right:re(e.right,`${t}.right`)})}function _s(e,t,r="filters"){const n=[];let s=[];return e.forEach((i,o)=>{const a=`${r}[${o}]`;if(Z(i)){try{s=O.mergeFiltersOrFilterRelations(Ls(i,a),s)}catch(u){const l=u instanceof Error?u.message:ye;n.push({path:a,input:t[o],message:l})}return}try{s=O.mergeFiltersOrFilterRelations([tt(i,a)],s)}catch(u){const l=u instanceof Error?u.message:ye;n.push({path:a,input:t[o],message:l})}}),{data:n.length>0?null:s,errors:n}}const ks=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];if(t.forEach((a,u)=>{const l={path:`filters[${u}]`,input:a};try{const g=I({data:a,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!Z(g)&&!we(g)?i.push(w(f({},l),{message:"Invalid filter JSON"})):s.push(g)}catch(g){const d=g instanceof Error?g.message:ye;i.push(w(f({},l),{message:d}))}}),i.length>0)return{success:!1,errors:i};const o=_s(s,t);return o.errors.length>0?{success:!1,errors:o.errors}:{success:!0,data:o.data}},ce=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Zt(t)?ks({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"filters",input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Us=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`highlights[${a}]`,input:o};try{const l=I({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});we(l)?s.push(tt(l,`highlights[${a}]`)):i.push(w(f({},u),{message:"Invalid filter JSON"}))}catch(l){const g=l instanceof Error?l.message:ye;i.push(w(f({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}},$e=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Zt(t)?Us({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"highlights",input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Bs=(e,t)=>{if(e&&!c.isSortDirection(e))return w(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Ps=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=I({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return Ye(i)?{success:!0,data:i}:{success:!1,errors:[w(f({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[w(f({},r),{message:o})]}}},Ws=(e,t,r,n)=>{const s=I({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Ye(s))return{style:{},error:w(f({},n),{message:"Invalid measure JSON"})};const i=Bs(e.sortType,n);if(i){const a=c.omit(e,"column");return{measure:s,style:a,error:i}}const o=c.omit(e,"column");return{measure:s,style:o}},zs=(e,t,r,n)=>{if(tr(e))return Ws(e,t,r,n);if(S(e)){const s=Ps(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:w(f({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},br=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"measures",input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`measures[${a}]`,input:o};try{const l=zs(o,r,n,u);if(l.error){i.push(l.error);return}l.measure&&s.push(l.style!==void 0?{measure:l.measure,style:l.style}:{measure:l.measure})}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(w(f({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function me(e){return typeof e=="string"?e:e.title}function Vs(e){const t={};for(const[r,n]of Object.entries(e)){const s={};n.filtersOptions!==void 0&&(s.filtersOptions=n.filtersOptions),n.partialDtoOptions!==void 0&&(s.partialDtoOptions=n.partialDtoOptions),Object.keys(s).length>0&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function Er(e){return typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"?e.toJSON():e}function k(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(k):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,k(r)])):e}function T(e,t,r){const n=e();if(!n.success){const s=r?n.errors.map(r):n.errors;return t.push(...s),null}return n.data}function Fr(e){return!Array.isArray(e)&&"operator"in e&&(e.operator==="AND"||e.operator==="OR")&&"left"in e&&"right"in e}function js(e){return e?Array.isArray(e)?e.flatMap(t=>W(t)):Fr(e)?[...W(e.left),...W(e.right)]:W(e):[]}function W(e){return Array.isArray(e)?e.flatMap(t=>W(t)):Fr(e)?[...W(e.left),...W(e.right)]:[e]}function wr(e,t){if(!He(e))return null;const r=e;return{columnName:cs(r),granularity:r.granularity,source:t}}function Et(e,t){const r=[];return e.forEach((n,s)=>{const i=`${t}[${s}]`;if((c.isMembersFilter(n)||c.isDateRangeFilter(n)||c.isRelativeDateFilter(n))&&c.isLevelAttribute(n.attribute)){const o=wr(n.attribute,i);o&&r.push(o)}}),r}function Ft(e){return e.startsWith("dimensions[")?"Date breakdown":e.startsWith("highlights[")?"Date highlight":"Date filter"}function wt(e,t){if(e.columnName!==t.columnName||e.granularity===t.granularity)return null;const r=Ft(e.source),n=Ft(t.source);return`${r} on ${e.granularity} (${e.source}) conflicts with ${n} on ${t.granularity} (${t.source}) on the same datetime column '${e.columnName}'. Use the same date level for filters/highlights, or for breakdown dimensions.`}function Js(e){var o;const t=[],r=e.dimensions.map((a,u)=>wr(a,`dimensions[${u}]`)).filter(a=>a!==null),n=Et(js(e.filters),"filters"),s=Et((o=e.highlights)!=null?o:[],"highlights"),i=[...n,...s];for(let a=0;a<i.length;a++)for(let u=a+1;u<i.length;u++){const l=wt(i[a],i[u]);l&&t.push({path:"filters",message:l,input:null})}for(let a=0;a<r.length;a++)for(let u=a+1;u<r.length;u++){const l=wt(r[a],r[u]);l&&t.push({path:"dimensions",message:l,input:null})}return t}const Ys=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=ae(n),i=[],o=T(()=>nr({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=T(()=>br({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=T(()=>ce({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let l=null;if(t.highlights&&(l=T(()=>$e({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0)return{success:!1,errors:i};const g=o?O.adaptDimensionsForQuery(o):[],d=Js({dimensions:g,filters:u||[],highlights:l!=null?l:null});return d.length>0?{success:!1,errors:d}:{success:!0,data:f({dataSource:c.convertDataSource(r),dimensions:g,measures:a?O.adaptMeasuresForQuery(a):[],filters:u||[]},l&&{highlights:l})}};function Tt(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function rt(e){const t=[],r=[];return e.forEach((n,s)=>{var d,p,b;const i=Tt(n)?n.column:n,o=Tt(n)?n:void 0,a=()=>Er(i);if(!i.composeCode){r.push({path:`dimensions[${s}]`,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(A)){r.push({path:`dimensions[${s}]`,input:a(),message:`Expected composeCode to start with '${A}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(b=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?b:((d=i.getSort)==null?void 0:d.call(i))!==void 0&&((p=i.getSort)==null?void 0:p.call(i))!==c.Sort.None?i.getSort():void 0,l=o?c.omit(o,"column"):{};if(u!==void 0&&u!==c.Sort.None||o&&Object.keys(l).length>0){const E=f(f({column:i.composeCode},u!==void 0&&u!==c.Sort.None&&{sortType:c.convertSortToSortDirection(u)}),l);t.push(E)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const Ue="Unknown error";function le(e){if(!e)return{success:!0,data:[]};const t=[];if(O.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{path:"filters",input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[Q(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:Ue;return{success:!1,errors:[{path:"filters",input:e,message:`Failed to parse composeCode for FilterRelations: ${s}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){t.push({path:`filters[${s}]`,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=Q(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:Ue;t.push({path:`filters[${s}]`,input:n,message:`Failed to parse composeCode for filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function De(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({path:`highlights[${s}]`,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=Q(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:Ue;r.push({path:`highlights[${s}]`,input:n,message:`Failed to parse composeCode for highlight filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function At(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function nt(e){const t=[],r=[];return e.forEach((n,s)=>{var u,l,g;const i=At(n)?n.column:n,o=At(n)?n:void 0,a=()=>Er(i);if(!i.composeCode){r.push({path:`measures[${s}]`,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const d=Q(i.composeCode),p=(g=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?g:((u=i.getSort)==null?void 0:u.call(i))!==void 0&&((l=i.getSort)==null?void 0:l.call(i))!==c.Sort.None?i.getSort():void 0;if(p!==void 0&&p!==c.Sort.None||o&&Object.keys(c.omit(o,"column")).length>0){const E=o?c.omit(o,"column"):{},y=f(f({column:d},p!==void 0&&p!==c.Sort.None&&{sortType:c.convertSortToSortDirection(p)}),E);t.push(y)}else t.push(d)}catch(d){const p=d instanceof Error?d.message:"Unknown error";r.push({path:`measures[${s}]`,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${p}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function St(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(O.TREND_PREFIX))!=null?s:!1)}function $t(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(O.FORECAST_PREFIX))!=null?s:!1)}function Dt(e){try{const t=Q(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Ks(e){var n,s,i;if(!(e!=null&&e.length))return[];const t=new Set,r=[];for(let o=0;o<e.length;o++){if(t.has(o))continue;const a=e[o];if(St(a)||$t(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",l=`${O.TREND_PREFIX}_${u}`,g=`${O.FORECAST_PREFIX}_${u}`;let d,p,b=o+1;if(b<e.length&&!t.has(b)&&St(e[b])&&e[b].name===l){const E=(s=e[b].composeCode)==null?void 0:s.trim();E&&(d=Dt(E),t.add(b),b++)}if(b<e.length&&!t.has(b)&&$t(e[b])&&e[b].name===g){const E=(i=e[b].composeCode)==null?void 0:i.trim();E&&(p=Dt(E),t.add(b))}d!==void 0||p!==void 0?r.push(f(f({column:a},d&&Object.keys(d).length>0&&{trend:d}),p&&Object.keys(p).length>0&&{forecast:p})):r.push(a)}return r}function Qs(e){const t=[],r=T(()=>rt(e.dimensions||[]),t),n=Ks(e.measures||[]),s=T(()=>nt(n),t),i=T(()=>le(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=T(()=>De(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=f({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:k(a)}}const Tr=new Set(O.ALL_CHART_TYPES.filter(e=>e!=="image")),Ot=Object.freeze([...Tr]),Me=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),Gs={line:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},area:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},bar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},column:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},streamgraph:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},polar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},pie:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},funnel:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},treemap:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},sunburst:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},scatter:{validAxes:new Set(["x","y","breakByPoint","breakByColor","size","seriesToColorMap"]),requiredAxes:[]},table:{validAxes:new Set(["columns"]),requiredAxes:["columns"]},indicator:{validAxes:new Set(["value","secondary","min","max"]),requiredAxes:[]},boxplot:{validAxes:new Set(["category","value","boxType","outliers"]),requiredAxes:["value"]},areamap:{validAxes:new Set(["geo","color"]),requiredAxes:["geo"]},scattermap:{validAxes:new Set(["geo","size","colorBy","details"]),requiredAxes:["geo"]},"calendar-heatmap":{validAxes:new Set(["date","value"]),requiredAxes:["date","value"]},arearange:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]}},Hs=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),Xs=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function Zs(e){const t=Gs[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function Ar(e){return typeof e=="string"&&Tr.has(e)}function ei(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Hs.has(e))return!0;if(Xs.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return q(n)&&"column"in n&&(s=n.column),!(S(n)||s!==void 0&&S(s))}function ti(e){const t=[],r={chartType:"",dataOptions:{}};if(!q(e))return t.push({path:"chartType",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=x("chartType",i,l=>l),a=o&&o.distance<=D?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=D?{[o.best]:e[o.best]}:e;t.push({path:"chartType",input:u,message:`chartType is required.${a}`})}else if(Ar(n))r.chartType=n;else{const i=x(String(n),Ot,u=>u),o=i&&i.distance<=D?` Did you mean '${i.best}'?`:"",a=Ot.slice(0,8).join(", ");t.push({path:"chartType",input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=x("dataOptions",i,l=>l),a=o&&o.distance<=D?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=D?{[o.best]:e[o.best]}:e;t.push({path:"dataOptions",input:u,message:`dataOptions is required.${a}`})}else s!==null&&typeof s=="object"&&(r.dataOptions=s);return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function ri(e){return e.map(({attribute:t,style:r})=>r?f({column:t},r):t)}function ni(e){return e.map(({measure:t,style:r})=>r?f({column:t},r):t)}function si(e){return Array.isArray(e)?e:[e]}function ii(e){return Array.isArray(e)?e:[e]}function oi(e){return Array.isArray(e)?e:[e]}const ai=/^(dimensions|measures|filters|highlights)(\[\d+\])?$/;function Be(e){return t=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0,s=N(e,n);if(ai.test(t.path)||t.path.startsWith("dataOptions"))return w(f({},t),{path:s});const i=t.path.replace(/\[\d+\]$/,"");return w(f({},t),{path:Xe(i,s)})}}function he(e,t,r,n,s){if(r==="dimension"){const a=t?si(t):[];if(a.length===0)return[];const u=T(()=>nr({data:a,context:n}),s,Be(e));return u!==null?ri(u):null}const i=t?ii(t):[];if(i.length===0)return[];const o=T(()=>br({data:i,context:n}),s,Be(e));return o!==null?ni(o):null}const Ct=(e,t)=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0;return w(f({},t),{path:N(e,n)})};function vt(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=rt(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>Ct(e,o))}}const s=nt(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>Ct(e,i))}}function ui(e,t){let r;q(e)&&"column"in e&&(r=e.column);const s=!(S(e)||r!==void 0&&S(r))?"dimension":"measure",i=[],o=he("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function ci(e,t,r,n){const s=[];for(const i of e){const o=T(()=>ui(i,t),r,n);o&&s.push(...o)}return s}function li(e,t,r){if(!e||!q(e))return r.push({path:N(-1),input:e,message:"dataOptions is required"}),null;const n={},{chartType:s}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const d of a)if(!Me.has(d)){const p=x(d,[...Me],E=>E),b=p&&p.distance<=D?` Did you mean '${p.best}'?`:"";p&&p.distance<=D&&u.set(d,p.best),r.push({path:N(d),input:o[d],message:`Unknown dataOptions key '${d}'.${b}`})}const l=s?Zs(s):void 0;if(l){for(const d of a)if(d!=="seriesToColorMap"&&!l.validAxes.has(d)&&Me.has(d)){const p=x(d,[...l.validAxes],y=>y),b=p&&p.distance<=D?` Did you mean '${p.best}'?`:"",E=[...l.validAxes].join(", ");r.push({path:N(d),input:o[d],message:`Axis '${d}' is not valid for chart type '${s}'. Valid axes: ${E}.${b}`})}for(const d of l.requiredAxes)[...u.values()].includes(d)||(!(d in o)||o[d]==null)&&r.push({path:N(d),input:null,message:`Chart type '${s}' requires '${l.requiredAxes.join("' and '")}'. Missing: ${d}.`});s==="indicator"&&(["value","secondary","min","max"].some(b=>b in o&&o[b]!=null)||r.push({path:N(-1),input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),s==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({path:N(-1),input:e,message:"Scatter chart requires at least one of: x, y."}))}if(r.length>i)return null;const g=Object.entries(e);for(const[d,p]of g){if(!p)continue;if(d==="seriesToColorMap"){n[d]=p;continue}if(d==="columns"){n[d]=ci(oi(p),t,r,Be("columns"));continue}const b=ei(d,p,s)?"dimension":"measure",E=he(d,p,b,t,r);if(E!==null){const y=s==="calendar-heatmap"&&d==="value";n[d]=y||!Array.isArray(p)?E[0]:E}}return r.length>i?null:n}function fi(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const Sr=e=>{var y;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=ti(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=ae(s),l=[];let g=li(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},l);if(a==="boxplot"&&g){const F=fi((y=i.styleOptions)==null?void 0:y.subtype),C=F==="iqr"||F==="standardDeviation";g=w(f({},g),{boxType:F,outliersEnabled:C})}let d=null;i.filters&&i.filters.length>0&&(d=T(()=>ce({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),l));let p=null;if(i.highlights&&i.highlights.length>0&&(p=T(()=>$e({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),l)),l.length>0||g===null)return{success:!1,errors:l};if(!Ar(i.chartType))return{success:!1,errors:[{path:"chartType",input:i.chartType,message:"Invalid chartType"}]};const b=i.chartType;return{success:!0,data:f(f(f({dataSet:c.convertDataSource(n),chartType:b,dataOptions:g},i.styleOptions&&{styleOptions:i.styleOptions}),d&&{filters:d}),p&&{highlights:p})}},$r=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{path:"chartType",input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};let r=null;const n=di(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const a=T(()=>le(e.filters),t);s=a!=null?a:void 0}let i;if(e.highlights&&e.highlights.length>0){const a=T(()=>De(e.highlights),t);i=a!=null?a:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=f(f(f({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),s&&s.length>0&&{filters:s}),i&&i.length>0&&{highlights:i});return{success:!0,data:k(o)}};function di(e){const t={},r=[],n=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[s,i]of Object.entries(e)){if(s==="seriesToColorMap"&&i){t[s]=i;continue}if(n.has(s)||i==null){i!=null&&(t[s]=i);continue}const o=Array.isArray(i)?i:[i],a=Array.isArray(i),u=[],l=[];for(let g=0;g<o.length;g++){const d=o[g],b=mi(d)?rt([d]):nt([d]);b.success?u.push(...b.data):b.errors.forEach(E=>{var y;l.push(w(f({},E),{path:N(s,g),input:(y=E.input)!=null?y:d}))})}if(l.length>0){r.push(...l);continue}t[s]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function mi(e){const t=Array.isArray(e)?e[0]:e;if(!t||!q(t))return!0;const r="column"in t&&t.column!=null&&q(t.column)?t.column:t;if("composeCode"in r){const n=r.composeCode;if(typeof n=="string"&&n.startsWith("DM."))return!0;if(typeof n=="string"&&(n.includes("measureFactory")||n.includes("Formula")))return!1}if("type"in r){const n=r.type;if(n==="basemeasure"||n==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const qt=["rows","columns","values","grandTotals"];function gi(e){if(!q(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function pi(e){const t=[],r={dataOptions:{}};if(!q(e))return t.push({path:"dataOptions",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=x("dataOptions",s,u=>u),o=i&&i.distance<=D?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=D?{[i.best]:e[i.best]}:e;t.push({path:"dataOptions",input:a,message:`dataOptions is required.${o}`})}else if(q(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!qt.includes(o)){const a=x(o,[...qt],l=>l),u=a&&a.distance<=D?` Did you mean '${a.best}'?`:"";t.push({path:N(o),input:s[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=s[o];a!=null&&!Array.isArray(a)&&t.push({path:N(o),input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!gi(i)&&t.push({path:N("grandTotals"),input:i,message:"grandTotals must be an object with optional rows?: boolean, columns?: boolean"})}return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function yi(e,t,r){if(!e||typeof e!="object")return r.push({path:N(-1),input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=he(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=he("values",e.values,"measure",t,r);return i&&(n.values=i),e.grandTotals!==void 0&&(n.grandTotals=e.grandTotals),r.length>s?null:n}const Dr=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=pi(t);if(o.length>0)return{success:!1,errors:o};const a=ae(s),u=[],l=yi(i.dataOptions,{dataSource:n,schemaIndex:a},u);let g=null;i.filters&&i.filters.length>0&&(g=T(()=>ce({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let d=null;return i.highlights&&i.highlights.length>0&&(d=T(()=>$e({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||l===null?{success:!1,errors:u}:{success:!0,data:f(f(f({dataSet:c.convertDataSource(n),dataOptions:l},i.styleOptions&&{styleOptions:i.styleOptions}),g&&{filters:g}),d&&{highlights:d})}},Or=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const u of["rows","columns"]){const l=r[u];if(l&&l.length>0){const g=vt(u,l,"dimension");g.success?n[u]=g.data:t.push(...g.errors)}}const s=r.values;if(s&&s.length>0){const u=vt("values",s,"measure");u.success?n.values=u.data:t.push(...u.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const u=T(()=>le(e.filters),t);i=u!=null?u:void 0}let o;if(e.highlights&&e.highlights.length>0){const u=T(()=>De(e.highlights),t);o=u!=null?u:void 0}if(t.length>0)return{success:!1,errors:t};const a=f(f(f({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:k(a)}},hi=(e,t,r)=>{const n=ae(r.tables),s={dataSource:r.dataSource,schemaIndex:n},i=[],o=e&&e.length>0?T(()=>ce({data:e,context:s}),i):void 0,a=t&&t.length>0?T(()=>$e({data:t,context:s}),i):void 0;return i.length>0?{success:!1,errors:i}:{success:!0,data:f(f({},o!=null&&{filters:o}),a!=null&&{highlights:a})}},bi=["widgetType","id","title","description","dataSource","config","highlightSelectionDisabled"],Nt=(e,t,r,n)=>{const{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:l}=e,g=c.omit(e,bi),d=r({data:g,context:t});return d.success?{success:!0,data:n(d.data,{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:l})}:d},Ei=(e,t)=>{const s=e,{dataSet:r}=s,n=Oe(s,["dataSet"]);return f(f(f(f(f(w(f({},n),{widgetType:"chart",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&O.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:t.highlightSelectionDisabled}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Fi=(e,t)=>{const s=e,{dataSet:r}=s,n=Oe(s,["dataSet"]);return f(f(f(f(w(f({},n),{widgetType:"pivot",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&O.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Pe=["chart","pivot","text","custom"],wi=e=>typeof e=="string"&&Pe.includes(e);function Ti(e){if(!q(e))return{path:"widgetType",input:e,message:"Expected an object"};const t=e.widgetType;if(t===void 0){const r=Object.keys(e),n=x("widgetType",r,o=>o),s=n&&n.distance<=D?` Did you mean 'widgetType'? (You may have typed '${n.best}')`:"";return{path:"widgetType",input:n&&n.distance<=D?{[n.best]:e[n.best]}:e,message:`widgetType is required.${s}`}}if(!wi(t)){const r=x(String(t),Pe,i=>i),n=r&&r.distance<=D?` Did you mean '${r.best}'?`:"",s=Pe.join(", ");return{path:"widgetType",input:t,message:`Invalid widgetType '${String(t)}'. Valid types: ${s}${n}`}}return null}const Ai=e=>({path:"id",input:e,message:"Widget id is required"}),Si=e=>!!e.id,Cr=e=>{const{data:t,context:r}=e,n=Ti(t);if(n)return{success:!1,errors:[n]};if(!Si(t))return{success:!1,errors:[Ai(t)]};switch(t.widgetType){case"chart":return Nt(t,r,Sr,Ei);case"pivot":return Nt(t,r,Dr,Fi);case"text":return{success:!0,data:f({widgetType:"text",id:t.id,styleOptions:t.styleOptions},t.config!==void 0&&{config:t.config})};case"custom":{const{id:s,customWidgetType:i,title:o,description:a,dataSource:u,config:l,filters:g,highlights:d,dataOptions:p,styleOptions:b,customOptions:E}=t,y=hi(g,d,r);return y.success?{success:!0,data:f(f(f(f(f(f({widgetType:"custom",id:s,customWidgetType:i,dataSource:u!==void 0?u:c.convertDataSource(r.dataSource),dataOptions:p!=null?p:{}},o!==void 0&&{title:o}),a!==void 0&&{description:a}),l!==void 0&&{config:l}),b!==void 0&&{styleOptions:b}),E!==void 0&&{customOptions:E}),y.data)}:y}default:return{success:!1,errors:[{path:"widgetType",input:t,message:`Unknown widgetType: ${String(t.widgetType)}`}]}}},vr=e=>{const{widgetType:t}=e;switch(t){case"chart":{const r=$r(e);if(!r.success)return r;const n=f(f(f(f(f(w(f({},r.data),{widgetType:"chart",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:me(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:e.highlightSelectionDisabled});return{success:!0,data:k(n)}}case"pivot":{const r=Or(e);if(!r.success)return r;const n=f(f(f(f(w(f({},r.data),{widgetType:"pivot",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:me(e.dataSource)}),e.config!==void 0&&{config:e.config});return{success:!0,data:k(n)}}case"text":return{success:!0,data:f({widgetType:"text",id:e.id,styleOptions:e.styleOptions},e.config!==void 0&&{config:e.config})};case"custom":{const r=[],n=e.filters!==void 0?T(()=>le(e.filters),r):void 0,s=e.highlights!==void 0?T(()=>De(e.highlights),r):void 0;return r.length>0?{success:!1,errors:r}:{success:!0,data:f(f(f(f(f(f(f(f(f({widgetType:"custom",customWidgetType:e.customWidgetType,id:e.id},e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:me(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.dataOptions!==void 0&&{dataOptions:e.dataOptions}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),e.customOptions!==void 0&&{customOptions:e.customOptions}),n&&n.length>0&&{filters:n}),s&&s.length>0&&{highlights:s})}}default:return{success:!1,errors:[{path:"widgetType",input:e,message:`Unknown widgetType: ${String(t)}`}]}}},$i=e=>{const{data:t,context:r}=e,n=[],s=[];Array.isArray(t.widgets)?t.widgets.forEach((a,u)=>{const l=Cr({data:a,context:r});if(!l.success){n.push(...gr(l.errors,mr(u)));return}s.push(l.data)}):n.push({path:"widgets",input:t.widgets,message:"Invalid dashboard JSON. Expected widgets to be an array."});let i=null;if(t.filters&&t.filters.length>0){const a=ae(r.tables);i=T(()=>ce({data:t.filters,context:{dataSource:r.dataSource,schemaIndex:a}}),n)}return n.length>0?{success:!1,errors:n}:{success:!0,data:f(f(f(f(f(f(f(f({widgets:s},t.id!==void 0&&{id:t.id}),t.title!==void 0&&{title:t.title}),i!==null&&{filters:i}),t.layoutOptions!==void 0&&{layoutOptions:t.layoutOptions}),t.config!==void 0&&{config:t.config}),t.defaultDataSource!==void 0&&{defaultDataSource:t.defaultDataSource}),t.styleOptions!==void 0&&{styleOptions:t.styleOptions}),t.widgetsOptions!==void 0&&{widgetsOptions:t.widgetsOptions})}},Di=e=>{const t=[],r=[];e.widgets.forEach((o,a)=>{const u=vr(o);if(!u.success){t.push(...gr(u.errors,mr(a)));return}r.push(u.data)});let n;if(e.filters){const o=T(()=>le(e.filters),t);n=o!=null?o:void 0}if(t.length>0)return{success:!1,errors:t};const s=e.widgetsOptions!==void 0?Vs(e.widgetsOptions):void 0,i=f(f(f(f(f(f(f(f({widgets:r},e.id!==void 0&&{id:e.id}),e.title!==void 0&&{title:e.title}),n&&n.length>0&&{filters:n}),e.layoutOptions!==void 0&&{layoutOptions:e.layoutOptions}),e.config!==void 0&&{config:e.config}),e.defaultDataSource!==void 0&&{defaultDataSource:me(e.defaultDataSource)}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),s!==void 0&&{widgetsOptions:s});return{success:!0,data:k(i)}};function Oi(e){const{filters:t,relations:r}=c.getFilterListAndRelationsJaql(e.filters||[]);return{dataSource:e.dataSource,dimensions:e.dimensions,measures:e.measures,filters:t,filterRelations:r,highlights:e.highlights}}function Ci(e,t,r=!1){const n=Oi(e),s=c.prepareQueryParams(n,t);return c.getJaqlQueryPayload(s,r)}function be(e){const t=e.trim();return t.startsWith(A)?t.slice(A.length):t}function ne(e){var n;const t=Se(e.function);if(t){const s=t.findIndex(i=>i.isName);if(s>=0){const i=e.args[s];if(typeof i=="string"&&i.length>0)return i}}const r=e.args[0];return typeof r=="string"?be(r):S(r)?ne(r):(n=e.function.split(".").pop())!=null?n:e.function}const xt="filterFactory.logic.";function Mt(e){var r;if(e.function.startsWith(xt))return e.function.slice(xt.length);const t=e.args[0];return typeof t=="string"?be(t):S(t)?ne(t):(r=e.function.split(".").pop())!=null?r:e.function}const vi="measureFactory.",qi="filterFactory.",Ni=e=>e.function.startsWith(vi),xi=e=>e.function.startsWith(qi);function Mi(e,t){var n;const r=(n=t==null?void 0:t.role)!=null?n:"filter";return typeof e=="string"?{name:be(e),type:"dimension"}:er(e)?{name:be(e.column),type:"dimension"}:tr(e)?{name:ne(e.column),type:"measure"}:S(e)?Ni(e)?{name:ne(e),type:"measure"}:xi(e)?{name:Mt(e),type:r}:(t==null?void 0:t.role)!==void 0?{name:Mt(e),type:r}:{name:ne(e),type:"measure"}:null}exports.EMPTY_EXPANDED_QUERY_MODEL=U.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=U.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=U.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=U.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=U.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=U.isClientSideWidgetCodeParams;exports.CustomSuperJSON=bn;exports.getQueryElementSummary=Mi;exports.translateChartFromJSON=Sr;exports.translateChartToJSON=$r;exports.translateDashboardFromJSON=$i;exports.translateDashboardToJSON=Di;exports.translatePivotTableFromJSON=Dr;exports.translatePivotTableToJSON=Or;exports.translateQueryFromJSON=Ys;exports.translateQueryToJSON=Qs;exports.translateQueryToJaql=Ci;exports.translateWidgetFromJSON=Cr;exports.translateWidgetToJSON=vr;
@@ -19,11 +19,11 @@ var ve = (e, t) => {
19
19
  t.indexOf(n) < 0 && lt.call(e, n) && (r[n] = e[n]);
20
20
  return r;
21
21
  };
22
- import { f as zr, J as Pr } from "../types-CzQiy3kx.js";
23
- import { b as no, E as so, a as io, i as ao, e as oo, d as uo } from "../types-CzQiy3kx.js";
24
- import { b0 as Vr, a_ as jr, bL as Yr, a$ as Jr, ay as Kr, bM as Gr, bN as Qr, $ as we, bO as Hr, q as Xr, bP as Zr, aU as en, ai as tn, bQ as rn, aX as nn, aV as sn, au as Ut, aT as Bt, aW as an, bR as on, u as un, b7 as cn, bS as ln, e as fn, bT as dn, bU as mn, bV as pn, bW as gn, bX as yn, bY as hn, bZ as bn, b_ as En, b$ as Fn, c0 as wn, c1 as An, ag as $n, c2 as Tn, c3 as Sn, af as W, k as ee, b as On, J as E, a5 as Cn, ac as P, v as Wt, c4 as Dn, r as qn, c5 as Nn, M as z, t as zt, c6 as vn, a0 as xn, ah as Ae, w as Pt, c7 as Vt, c8 as Rn, bi as Mn, a1 as In } from "../execute-query-4_76L7Ax.js";
25
- import { W as Ln, Z as kn, X as _n, Y as Un, $ as Bn, z as ft, a8 as Wn, a9 as zn, q as Pn, ac as jt, ad as Yt, A as Vn, a0 as Jt } from "../apply-styled-options-to-query-lFlufwrB.js";
26
- import { f as jn } from "../index-eIOG6LP6.js";
22
+ import { f as zr, J as Pr } from "../types-B60QjE1r.js";
23
+ import { b as no, E as so, a as io, i as ao, e as oo, d as uo } from "../types-B60QjE1r.js";
24
+ import { b0 as Vr, a_ as jr, bM as Yr, a$ as Jr, ay as Kr, bN as Gr, bO as Qr, $ as we, bP as Hr, q as Xr, bQ as Zr, aU as en, aj as tn, bR as rn, aX as nn, aV as sn, au as Ut, aT as Bt, aW as an, bS as on, u as un, b7 as cn, bT as ln, e as fn, bU as dn, bV as mn, bW as pn, bX as gn, bY as yn, bZ as hn, b_ as bn, b$ as En, c0 as Fn, c1 as wn, c2 as An, ah as $n, c3 as Tn, c4 as Sn, ag as W, k as ee, b as On, H as E, a5 as Cn, ac as P, v as Wt, c5 as Dn, r as qn, c6 as Nn, M as z, t as zt, c7 as vn, a0 as xn, ai as Ae, w as Pt, c8 as Vt, c9 as Rn, bj as Mn, a1 as In } from "../execute-query-D-gXk-LI.js";
25
+ import { X as Ln, $ as kn, Y as _n, Z as Un, a0 as Bn, B as ft, a9 as Wn, aa as zn, u as Pn, ad as jt, ae as Yt, A as Vn, a1 as Jt } from "../apply-styled-options-to-query-TW3CqofD.js";
26
+ import { f as jn } from "../index-Ct7mA7YB.js";
27
27
  function Yn(e, t) {
28
28
  const r = e.length, n = t.length, s = Array.from({ length: r + 1 }, (i, a) => Array.from({ length: n + 1 }, (o, u) => a === 0 ? u : u === 0 ? a : 0));
29
29
  for (let i = 1; i <= r; i++)