@sisense/sdk-ui 2.25.0 → 2.26.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 (92) hide show
  1. package/dist/ai.cjs +33 -33
  2. package/dist/ai.js +626 -639
  3. package/dist/analytics-composer/node.cjs +1 -1
  4. package/dist/analytics-composer/node.js +1010 -865
  5. package/dist/analytics-composer.cjs +1 -1
  6. package/dist/analytics-composer.js +6 -6
  7. package/dist/{apply-styled-options-to-query-BsBTwL6W.js → apply-styled-options-to-query-Bzt2GrgO.js} +1459 -1426
  8. package/dist/apply-styled-options-to-query-COD9fRYD.cjs +1 -0
  9. package/dist/dimensions-Ce2zWFrs.js +204 -0
  10. package/dist/dimensions-u3w5qNF0.cjs +1 -0
  11. package/dist/index.cjs +380 -380
  12. package/dist/index.js +17024 -16696
  13. package/dist/index.umd.js +649 -660
  14. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/translate-dashboard-utils.d.ts +2 -0
  15. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/types.d.ts +11 -0
  16. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/types.d.ts +12 -0
  17. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/utils.d.ts +5 -2
  18. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-widget-scroll-persistence.d.ts +16 -0
  19. package/dist/packages/sdk-ui/src/domains/dashboarding/use-composed-dashboard.d.ts +2 -3
  20. package/dist/packages/sdk-ui/src/domains/data-browser/data-source-dimensional-model/hooks/use-get-data-source-dimensions.d.ts +10 -0
  21. package/dist/packages/sdk-ui/src/domains/data-browser/data-source-dimensional-model/hooks/use-get-data-source-fields.d.ts +2 -0
  22. package/dist/packages/sdk-ui/src/domains/drilldown/components/drilldown-widget/drilldown-widget.d.ts +2 -2
  23. package/dist/packages/sdk-ui/src/domains/narrative/core/widget-narrative-options.d.ts +2 -1
  24. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-get-widget-narrative.d.ts +2 -2
  25. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-widget-narrative-state.d.ts +1 -1
  26. package/dist/packages/sdk-ui/src/domains/query-execution/core/date-formats/simple-date-format-replacers.d.ts +13 -0
  27. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-pivot-query/use-execute-pivot-query.d.ts +2 -2
  28. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-query/use-execute-query.d.ts +2 -2
  29. package/dist/packages/sdk-ui/src/domains/visualizations/components/area-chart.d.ts +2 -2
  30. package/dist/packages/sdk-ui/src/domains/visualizations/components/areamap-chart.d.ts +2 -2
  31. package/dist/packages/sdk-ui/src/domains/visualizations/components/bar-chart.d.ts +2 -2
  32. package/dist/packages/sdk-ui/src/domains/visualizations/components/boxplot-chart/boxplot-chart.d.ts +2 -2
  33. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/chart.d.ts +2 -2
  34. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/cartesians/helpers/highchart-options/axis.d.ts +1 -1
  35. package/dist/packages/sdk-ui/src/domains/visualizations/components/column-chart.d.ts +2 -2
  36. package/dist/packages/sdk-ui/src/domains/visualizations/components/funnel-chart.d.ts +2 -2
  37. package/dist/packages/sdk-ui/src/domains/visualizations/components/line-chart.d.ts +2 -2
  38. package/dist/packages/sdk-ui/src/domains/visualizations/components/pie-chart/pie-chart.d.ts +2 -2
  39. package/dist/packages/sdk-ui/src/domains/visualizations/components/polar-chart.d.ts +2 -2
  40. package/dist/packages/sdk-ui/src/domains/visualizations/components/scatter-chart.d.ts +2 -2
  41. package/dist/packages/sdk-ui/src/domains/visualizations/components/scattermap-chart.d.ts +2 -2
  42. package/dist/packages/sdk-ui/src/domains/visualizations/components/sunburst-chart/sunburst-chart.d.ts +2 -2
  43. package/dist/packages/sdk-ui/src/domains/visualizations/components/table/table.d.ts +2 -2
  44. package/dist/packages/sdk-ui/src/domains/visualizations/components/treemap-chart/treemap-chart.d.ts +2 -2
  45. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/types.d.ts +6 -6
  46. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/cartesian/utils/axis/axis-builders.d.ts +6 -1
  47. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/plot-bands.d.ts +2 -1
  48. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/axis-section.d.ts +29 -1
  49. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/design-options.d.ts +1 -0
  50. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/tooltip-utils.d.ts +1 -1
  51. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/compose-code-to-readable.d.ts +24 -4
  52. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/index.d.ts +3 -0
  53. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/query-params-to-view-model.d.ts +6 -2
  54. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/query-pill.d.ts +6 -1
  55. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/to-widget-dto-style.d.ts +118 -2
  56. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/types.d.ts +18 -0
  57. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/use-scroller-location-save.d.ts +8 -0
  58. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/utils.d.ts +9 -0
  59. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/widget-by-id.d.ts +2 -2
  60. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/with-navigator-scroll-save.d.ts +10 -0
  61. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/use-get-widget-model.d.ts +2 -2
  62. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model-translator/to-widget-dto-panels.d.ts +170 -0
  63. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model-translator/widget-model-translator.d.ts +8 -14
  64. package/dist/packages/sdk-ui/src/infra/api/narrative/narrative-endpoints.d.ts +3 -3
  65. package/dist/packages/sdk-ui/src/infra/api/rest-api.d.ts +12 -1
  66. package/dist/packages/sdk-ui/src/infra/app/settings/settings.d.ts +10 -2
  67. package/dist/packages/sdk-ui/src/infra/contexts/custom-widgets-provider/use-custom-widgets.d.ts +10 -3
  68. package/dist/packages/sdk-ui/src/infra/plugins/plugin-context.d.ts +2 -2
  69. package/dist/packages/sdk-ui/src/infra/plugins/types.d.ts +2 -2
  70. package/dist/packages/sdk-ui/src/infra/plugins/widget-plugins/types.d.ts +9 -0
  71. package/dist/packages/sdk-ui/src/modules/ai/api/chat-rest-api.d.ts +3 -4
  72. package/dist/packages/sdk-ui/src/modules/ai/index.d.ts +1 -0
  73. package/dist/packages/sdk-ui/src/public-api/internal.d.ts +1 -1
  74. package/dist/packages/sdk-ui/src/public-api/sisense-internal.d.ts +1 -1
  75. package/dist/packages/sdk-ui/src/shared/utils/filter-relations.d.ts +2 -0
  76. package/dist/packages/sdk-ui/src/types.d.ts +7 -7
  77. package/dist/{types-GFLaiax5.cjs → types-COBvZZm_.cjs} +1 -1
  78. package/dist/{types-BBp2sp_s.js → types-D6jCGncV.js} +1 -1
  79. package/dist/{use-hover-mptQLQ4S.js → use-hover-B1HPf4hF.js} +6190 -6093
  80. package/dist/{use-hover-DsnmY-p_.cjs → use-hover-CaQrW_gv.cjs} +112 -112
  81. package/dist/{utils-DTUC-wtI.js → utils-BQtueE3Z.js} +9591 -9422
  82. package/dist/utils-CAubp1g1.cjs +179 -0
  83. package/dist/{widget-composer-D0BZrLna.js → widget-composer-BAJFWk3t.js} +3 -3
  84. package/dist/{widget-composer-CDb2iOoS.cjs → widget-composer-C75b-E6W.cjs} +1 -1
  85. package/package.json +8 -8
  86. package/dist/apply-styled-options-to-query-mFJvsssw.cjs +0 -1
  87. package/dist/packages/sdk-ui/src/domains/widgets/components/table-widget/index.d.ts +0 -2
  88. package/dist/packages/sdk-ui/src/domains/widgets/components/table-widget/table-widget.d.ts +0 -22
  89. package/dist/packages/sdk-ui/src/domains/widgets/components/table-widget/types.d.ts +0 -61
  90. package/dist/parse-compose-code-DfZskSng.js +0 -352
  91. package/dist/parse-compose-code-v4J9BrUg.cjs +0 -1
  92. package/dist/utils-BlNqPAG8.cjs +0 -190
@@ -1 +1 @@
1
- "use strict";var $t=Object.defineProperty,Ot=Object.defineProperties;var Mt=Object.getOwnPropertyDescriptors;var Me=Object.getOwnPropertySymbols;var vt=Object.prototype.hasOwnProperty,Nt=Object.prototype.propertyIsEnumerable;var ve=(e,t,r)=>t in e?$t(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))vt.call(t,r)&&ve(e,r,t[r]);if(Me)for(var r of Me(t))Nt.call(t,r)&&ve(e,r,t[r]);return e},E=(e,t)=>Ot(e,Mt(t));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("../types-GFLaiax5.cjs"),c=require("../apply-styled-options-to-query-mFJvsssw.cjs"),v=require("../parse-compose-code-v4J9BrUg.cjs");function Rt(e,t){const r=e.length,s=t.length,n=Array.from({length:r+1},(i,o)=>Array.from({length:s+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=s;o++)n[i][o]=Math.min(n[i-1][o]+1,n[i][o-1]+1,n[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return n[r][s]}class It{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 Ye{constructor(t){this.generateIdentifier=t,this.kv=new It}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 Pt extends Ye{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 Lt(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 kt(e,t){const r=Lt(e);if("find"in r)return r.find(t);const s=r;for(let n=0;n<s.length;n++){const i=s[n];if(t(i))return i}}function _(e,t){Object.entries(e).forEach(([r,s])=>t(s,r))}function H(e,t){return e.indexOf(t)!==-1}function Ne(e,t){for(let r=0;r<e.length;r++){const s=e[r];if(t(s))return s}}class Bt{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return kt(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const zt=e=>Object.prototype.toString.call(e).slice(8,-1),Ge=e=>typeof e=="undefined",Ut=e=>e===null,j=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,le=e=>j(e)&&Object.keys(e).length===0,P=e=>Array.isArray(e),_t=e=>typeof e=="string",Vt=e=>typeof e=="number"&&!isNaN(e),Wt=e=>typeof e=="boolean",jt=e=>e instanceof RegExp,K=e=>e instanceof Map,J=e=>e instanceof Set,Qe=e=>zt(e)==="Symbol",Kt=e=>e instanceof Date&&!isNaN(e.valueOf()),Jt=e=>e instanceof Error,Re=e=>typeof e=="number"&&isNaN(e),Yt=e=>Wt(e)||Ut(e)||Ge(e)||Vt(e)||_t(e)||Qe(e),Gt=e=>typeof e=="bigint",Qt=e=>e===1/0||e===-1/0,Ht=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),Xt=e=>e instanceof URL,He=e=>e.replace(/\./g,"\\."),ne=e=>e.map(String).map(He).join("."),W=e=>{const t=[];let r="";for(let n=0;n<e.length;n++){let i=e.charAt(n);if(i==="\\"&&e.charAt(n+1)==="."){r+=".",n++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const s=r;return t.push(s),t};function I(e,t,r,s){return{isApplicable:e,annotation:t,transform:r,untransform:s}}const Xe=[I(Ge,"undefined",()=>null,()=>{}),I(Gt,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),I(Kt,"Date",e=>e.toISOString(),e=>new Date(e)),I(Jt,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(s=>{r[s]=e[s]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(s=>{r[s]=e[s]}),r}),I(jt,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),I(J,"set",e=>[...e.values()],e=>new Set(e)),I(K,"map",e=>[...e.entries()],e=>new Map(e)),I(e=>Re(e)||Qt(e),"number",e=>Re(e)?"NaN":e>0?"Infinity":"-Infinity",Number),I(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),I(Xt,"URL",e=>e.toString(),e=>new URL(e))];function ee(e,t,r,s){return{isApplicable:e,annotation:t,transform:r,untransform:s}}const Ze=ee((e,t)=>Qe(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const s=r.symbolRegistry.getValue(t[1]);if(!s)throw new Error("Trying to deserialize unknown symbol");return s}),Zt=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),et=ee(Ht,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=Zt[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function tt(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const rt=ee(tt,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return h({},e);const s={};return r.forEach(n=>{s[n]=e[n]}),s},(e,t,r)=>{const s=r.classRegistry.getValue(t[1]);if(!s)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(s.prototype),e)}),st=ee((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 s=r.customTransformerRegistry.findByName(t[1]);if(!s)throw new Error("Trying to deserialize unknown custom value");return s.deserialize(e)}),er=[rt,Ze,st,et],Ie=(e,t)=>{const r=Ne(er,n=>n.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const s=Ne(Xe,n=>n.isApplicable(e,t));if(s)return{value:s.transform(e,t),type:s.annotation}},nt={};Xe.forEach(e=>{nt[e.annotation]=e});const tr=(e,t,r)=>{if(P(t))switch(t[0]){case"symbol":return Ze.untransform(e,t,r);case"class":return rt.untransform(e,t,r);case"custom":return st.untransform(e,t,r);case"typed-array":return et.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const s=nt[t];if(!s)throw new Error("Unknown transformation: "+t);return s.untransform(e,r)}},U=(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 it(e){if(H(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(H(e,"prototype"))throw new Error("prototype is not allowed as a property");if(H(e,"constructor"))throw new Error("constructor is not allowed as a property")}const rr=(e,t)=>{it(t);for(let r=0;r<t.length;r++){const s=t[r];if(J(e))e=U(e,+s);else if(K(e)){const n=+s,i=+t[++r]==0?"key":"value",o=U(e,n);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[s]}return e},ce=(e,t,r)=>{if(it(t),t.length===0)return r(e);let s=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(P(s)){const a=+o;s=s[a]}else if(j(s))s=s[o];else if(J(s)){const a=+o;s=U(s,a)}else if(K(s)){if(i===t.length-2)break;const u=+o,l=+t[++i]==0?"key":"value",g=U(s,u);switch(l){case"key":s=g;break;case"value":s=s.get(g);break}}}const n=t[t.length-1];if(P(s)?s[+n]=r(s[+n]):j(s)&&(s[n]=r(s[n])),J(s)){const i=U(s,+n),o=r(i);i!==o&&(s.delete(i),s.add(o))}if(K(s)){const i=+t[t.length-2],o=U(s,i);switch(+n==0?"key":"value"){case"key":{const u=r(o);s.set(u,s.get(o)),u!==o&&s.delete(o);break}case"value":{s.set(o,r(s.get(o)));break}}}return e};function de(e,t,r=[]){if(!e)return;if(!P(e)){_(e,(i,o)=>de(i,t,[...r,...W(o)]));return}const[s,n]=e;n&&_(n,(i,o)=>{de(i,t,[...r,...W(o)])}),t(s,r)}function sr(e,t,r){return de(t,(s,n)=>{e=ce(e,n,i=>tr(i,s,r))}),e}function nr(e,t){function r(s,n){const i=rr(e,W(n));s.map(W).forEach(o=>{e=ce(e,o,()=>i)})}if(P(t)){const[s,n]=t;s.forEach(i=>{e=ce(e,W(i),()=>e)}),n&&_(n,r)}else _(t,r);return e}const ir=(e,t)=>j(e)||P(e)||K(e)||J(e)||tt(e,t);function or(e,t,r){const s=r.get(e);s?s.push(t):r.set(e,[t])}function ar(e,t){const r={};let s;return e.forEach(n=>{if(n.length<=1)return;t||(n=n.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=n;i.length===0?s=o.map(ne):r[ne(i)]=o.map(ne)}),s?le(r)?[s]:[s,r]:le(r)?void 0:r}const ot=(e,t,r,s,n=[],i=[],o=new Map)=>{var F;const a=Yt(e);if(!a){or(e,n,t);const y=o.get(e);if(y)return s?{transformedValue:null}:y}if(!ir(e,r)){const y=Ie(e,r),p=y?{transformedValue:y.value,annotations:[y.type]}:{transformedValue:e};return a||o.set(e,p),p}if(H(i,e))return{transformedValue:null};const u=Ie(e,r),l=(F=u==null?void 0:u.value)!=null?F:e,g=P(l)?[]:{},d={};_(l,(y,p)=>{if(p==="__proto__"||p==="constructor"||p==="prototype")throw new Error(`Detected property ${p}. This is a prototype pollution risk, please remove it from your object.`);const A=ot(y,t,r,s,[...n,p],[...i,e],o);g[p]=A.transformedValue,P(A.annotations)?d[p]=A.annotations:j(A.annotations)&&_(A.annotations,(T,N)=>{d[He(p)+"."+N]=T})});const m=le(d)?{transformedValue:g,annotations:u?[u.type]:void 0}:{transformedValue:g,annotations:u?[u.type,d]:d};return a||o.set(e,m),m};function at(e){return Object.prototype.toString.call(e).slice(8,-1)}function Pe(e){return at(e)==="Array"}function ur(e){if(at(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function lr(e,t,r,s,n){const i={}.propertyIsEnumerable.call(s,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),n&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function fe(e,t={}){if(Pe(e))return e.map(n=>fe(n,t));if(!ur(e))return e;const r=Object.getOwnPropertyNames(e),s=Object.getOwnPropertySymbols(e);return[...r,...s].reduce((n,i)=>{if(Pe(t.props)&&!t.props.includes(i))return n;const o=e[i],a=fe(o,t);return lr(n,i,a,e,t.nonenumerable),n},{})}class b{constructor({dedupe:t=!1}={}){this.classRegistry=new Pt,this.symbolRegistry=new Ye(r=>{var s;return(s=r.description)!=null?s:""}),this.customTransformerRegistry=new Bt,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,s=ot(t,r,this,this.dedupe),n={json:s.transformedValue};s.annotations&&(n.meta=E(h({},n.meta),{values:s.annotations}));const i=ar(r,this.dedupe);return i&&(n.meta=E(h({},n.meta),{referentialEqualities:i})),n}deserialize(t){const{json:r,meta:s}=t;let n=fe(r);return s!=null&&s.values&&(n=sr(n,s.values,this)),s!=null&&s.referentialEqualities&&(n=nr(n,s.referentialEqualities)),n}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(h({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}b.defaultInstance=new b;b.serialize=b.defaultInstance.serialize.bind(b.defaultInstance);b.deserialize=b.defaultInstance.deserialize.bind(b.defaultInstance);b.stringify=b.defaultInstance.stringify.bind(b.defaultInstance);b.parse=b.defaultInstance.parse.bind(b.defaultInstance);b.registerClass=b.defaultInstance.registerClass.bind(b.defaultInstance);b.registerSymbol=b.defaultInstance.registerSymbol.bind(b.defaultInstance);b.registerCustom=b.defaultInstance.registerCustom.bind(b.defaultInstance);b.allowErrorProps=b.defaultInstance.allowErrorProps.bind(b.defaultInstance);const z=e=>e===void 0?c.Sort.None:e,cr=e=>new L.JaqlElement(e.metadataItem,e.type),ge=e=>new c.DimensionalAttribute(e.name,e.expression,e.type,e.description,z(e.sort),e.dataSource,e.composeCode),ye=e=>new c.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,z(e.sort),e.dataSource,e.composeCode),$=e=>{switch(e.__serializable){case"DimensionalAttribute":return ge(e);case"DimensionalLevelAttribute":return ye(e);default:return e}},ut=e=>new v.DimensionalDimension(e.name,e.expression,e.attributes.map($),e.dimensions.map(dr),e.type,e.description,z(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?$(e.defaultAttribute):void 0),lt=e=>new v.DimensionalDateDimension(e.name,e.expression,e.description,z(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged),dr=e=>{switch(e.__serializable){case"DimensionalDimension":return ut(e);case"DimensionalDateDimension":return lt(e);default:return e}},he=e=>new c.DimensionalBaseMeasure(e.name,$(e.attribute),e.aggregation,e.format,e.description,z(e.sort),e.dataSource,e.composeCode),be=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,s])=>{if(s&&typeof s=="object"&&"__serializable"in s)switch(s.__serializable){case"DimensionalAttribute":return[r,ge(s)];case"DimensionalLevelAttribute":return[r,ye(s)];case"DimensionalBaseMeasure":return[r,he(s)];case"DimensionalCalculatedMeasure":return[r,be(s)];default:return[r,s]}return[r,s]}));return new c.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,z(e.sort),e.dataSource,e.composeCode)},ct=e=>new c.DimensionalMeasureTemplate(e.name,$(e.attribute),e.format,e.description,z(e.sort),e.dataSource,e.composeCode),ie=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return he(e);case"DimensionalCalculatedMeasure":return be(e);case"DimensionalMeasureTemplate":return ct(e);default:return e}},q=e=>{switch(e.__serializable){case"MembersFilter":return new c.MembersFilter($(e.attribute),e.members,e.config.backgroundFilter?E(h({},e.config),{backgroundFilter:q(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new c.LogicalAttributeFilter(e.filters.map(r=>q(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new c.CascadingFilter(e._filters.map(r=>q(r)),e.config,e.composeCode);case"ExcludeFilter":return new c.ExcludeFilter(q(e.filter),e.input?q(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new c.MeasureFilter($(e.attribute),ie(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new c.RankingFilter($(e.attribute),ie(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new c.MeasureRankingFilter(ie(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new c.NumericFilter($(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new c.TextFilter($(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:s}=e;return new c.DateRangeFilter($(e.attribute),r,s,e.config,e.composeCode)}case"RelativeDateFilter":return new c.RelativeDateFilter($(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new c.CustomFilter($(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};b.registerCustom({isApplicable:L.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>cr(e)},"JaqlElement");b.registerCustom({isApplicable:c.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>ge(e)},"DimensionalAttribute");b.registerCustom({isApplicable:c.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>ye(e)},"DimensionalLevelAttribute");b.registerCustom({isApplicable:v.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>ut(e)},"DimensionalDimension");b.registerCustom({isApplicable:v.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>lt(e)},"DimensionalDateDimension");b.registerCustom({isApplicable:c.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>he(e)},"DimensionalBaseMeasure");b.registerCustom({isApplicable:c.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>be(e)},"DimensionalCalculatedMeasure");b.registerCustom({isApplicable:c.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>ct(e)},"DimensionalMeasureTemplate");b.registerCustom({isApplicable:c.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"MembersFilter");b.registerCustom({isApplicable:c.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"LogicalAttributeFilter");b.registerCustom({isApplicable:c.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"CascadingFilter");b.registerCustom({isApplicable:c.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"ExcludeFilter");b.registerCustom({isApplicable:c.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"MeasureFilter");b.registerCustom({isApplicable:c.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"RankingFilter");b.registerCustom({isApplicable:c.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"MeasureRankingFilter");b.registerCustom({isApplicable:c.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"NumericFilter");b.registerCustom({isApplicable:c.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"TextFilter");b.registerCustom({isApplicable:c.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"DateRangeFilter");b.registerCustom({isApplicable:c.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"RelativeDateFilter");b.registerCustom({isApplicable:c.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"CustomFilter");const fr=b,C="DM.";function D(e){return typeof e=="object"&&e!==null}function S(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function dt(e){return e.every(S)}function te(e){return"attribute"in e&&"config"in e}function Q(e){return"left"in e&&"right"in e&&"operator"in e}function Fe(e){return!te(e)&&!Q(e)}function mr(e){return D(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function pr(e){return!D(e)||!("column"in e)?!1:S(e.column)}const x=3;function R(e,t,r){if(t.length===0)return;let s=Number.MAX_SAFE_INTEGER,n;for(const i of t){const o=r(i),a=Rt(e,o);a<s&&(s=a,n=i)}return n!==void 0?{best:n,distance:s}:void 0}const ft="en";function oe(e,t){return e.localeCompare(t,ft,{sensitivity:"accent"})===0}function Le(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,ft,{sensitivity:"accent"})===0}function Ae(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,s=new Map,n=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);n.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);s.set(i.name,a)}return{sortedTables:t,tableColumnMap:n,tableMap:r,columnMap:s}}function Ee(e,t){if(!e.startsWith(C))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);const r=e.slice(C.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);let s,n;for(const p of t.sortedTables)if(Le(r,p.name+".")){const A=r.slice(p.name.length+1);if(!A)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);s=p,n=A;break}if(!s){const p=r.indexOf(".");if(p===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);const A=r.slice(0,p),T=R(A,t.sortedTables,se=>se.name),N=T&&T.distance<=x?` Did you mean '${T.best.name}'?`:"";throw new Error(`Table '${A}' not found in the data model.${N}`)}const i=t.tableColumnMap.get(s.name);if(!i)throw new Error(`Table '${s.name}' found but has no columns`);let o,a;const u=c.DateLevels.all;for(const p of i){if(oe(n,p.name))return{table:s,column:p};if(!Le(n,p.name+"."))continue;const A=n.slice(p.name.length+1);if(!A)continue;const T=u.includes(A),N=c.isDatetime(p.dataType);if(T){if(N)return{table:s,column:p,level:A};o||(o=p,a=A);continue}N&&!o&&(o=p,a=A)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${s.name}.${o.name}' is not a datetime column`);const p=R(a,u,T=>T),A=p&&p.distance<=x?` Did you mean '${p.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${A}`)}const l=n.indexOf("."),g=l===-1?n:n.slice(0,l),d=R(n,i,p=>p.name),m=d&&d.distance<=x&&!oe(d.best.name,g),F=m?` Did you mean '${d.best.name}'?`:"",y=!m&&n.endsWith(".")&&d!==void 0&&oe(d.best.name,g)?` Use '${g}' without a trailing dot.`:"";throw new Error(`Column '${g}' not found in table '${s.name}'.${F}${y}`)}function gr(e,t){const{table:r,column:s,level:n}=Ee(e,t);if(n){if(!c.isDatetime(s.dataType))throw new Error(`Invalid date level '${n}' in dimensional element '${e}'. Column '${r.name}.${s.name}' is not a datetime column`);const i=c.DateLevels.all;if(!i.includes(n))throw new Error(`Invalid date level '${n}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=c.DateLevels.dateOnly;if(s.dataType==="date"&&!o.includes(n))throw new Error(`Invalid level '${n}' in dimensional element '${e}'. Column '${r.name}.${s.name}' is only a date column, not a datetime column`);const a=c.DateLevels.timeOnly;if(s.dataType==="time"&&!a.includes(n))throw new Error(`Invalid level '${n}' in dimensional element '${e}'. Column '${r.name}.${s.name}' is only a time column, not a date column`)}return{table:r,column:s,level:n}}function Y(e,t,r,s){const{table:n,column:i,level:o}=gr(e,r);let a=o;if(c.isDatetime(i.dataType)&&a===void 0&&(s!=null&&s.inferredDateLevel)){const u=s.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 '${n.name}.${i.name}' is only a date column, not a datetime column`);const m=c.DateLevels.timeOnly;if(i.dataType==="time"&&!m.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${g}'. Column '${n.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 yr(e,t,r){const{column:s,level:n}=Ee(e,r);if(n)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${C}TableName.ColumnName'`);if(!c.isDatetime(s.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${s.name}' is not a datetime column (got ${s.dataType}).`);return v.createDateDimension({name:s.name,expression:s.expression,dataSource:t})}const hr=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!c.isSortDirection(r))return E(h({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},br=(e,t,r,s)=>{const n=hr(e.sortType,s);if(n)return{attribute:Y(e.column,t,r),style:{},error:n};const i=Y(e.column,t,r),o=c.omit(e,"column");return{attribute:i,style:o}},Fr=(e,t,r,s)=>typeof e=="string"?{attribute:Y(e,t,r)}:mr(e)?br(e,t,r,s):{error:E(h({},s),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},mt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:s}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{category:"dimensions",index:-1,input:t,message:"Invalid dimensions JSON. Expected an array."}]};const n=[],i=[];return t.forEach((o,a)=>{const u={category:"dimensions",index:a,input:o};try{const l=Fr(o,r,s,u);if(l.error){i.push(l.error);return}l.attribute&&n.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(E(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:n}};function we(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 Ar(e,t){const r=e.replace("measureFactory.",""),n=we(c.measureFactory,r)(...t);if(!Fe(n))throw new Error(`Function '${e}' did not return a valid Measure`);return n}function Er(e,t){const r=e.replace("filterFactory.logic.",""),n=we(c.logic,r)(...t);if(!Q(n))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return n}function wr(e,t){if(e.startsWith("filterFactory.logic."))return Er(e,t);const r=e.replace("filterFactory.",""),n=we(c.filterFactory,r)(...t);if(!te(n)&&!Q(n))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return n}function Cr(e,t){const s=e.split(".")[0];if(s==="measureFactory")return Ar(e,t);if(s==="filterFactory")return wr(e,t);throw new Error(`Unsupported factory: '${s}'. Supported factories: measureFactory, filterFactory`)}const f=(e,t,r,s)=>h({category:e,minArgs:t,maxArgs:r},s),Tr=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),X={SDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Seconds,argType:"datetime"}),MNDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Minutes,argType:"datetime"}),HDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Hours,argType:"datetime"}),DDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Days,argType:"datetime"}),MDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Months,argType:"datetime"}),QDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Quarters,argType:"datetime"}),YDIFF:f("xdiff",2,2,{requiredDateLevel:c.DateLevels.Years,argType:"datetime"}),ANYVALUE:f("aggregative",1,1),SUM:f("aggregative",1,2),AVG:f("aggregative",1,2),MIN:f("aggregative",1,2),MAX:f("aggregative",1,2),COUNT:f("aggregative",1,2),DUPCOUNT:f("aggregative",1,1),COUNTDUPLICATES:f("aggregative",1,1),STDEV:f("aggregative",1,2),STDEVP:f("aggregative",1,2),VAR:f("aggregative",1,2),VARP:f("aggregative",1,2),MEDIAN:f("aggregative",1,2),QUARTILE:f("aggregative",2,3),PERCENTILE:f("aggregative",2,3),LOWERWHISKERMAX_IQR:f("aggregative",1,1),LOWERWHISKERMAX_STDEVP:f("aggregative",1,1),UPPERWHISKERMIN_IQR:f("aggregative",1,1),UPPERWHISKERMIN_STDEVP:f("aggregative",1,1),OUTLIERSCOUNT_IQR:f("aggregative",1,1),OUTLIERSCOUNT_STDEVP:f("aggregative",1,1),MODE:f("aggregative",1,1),NOAGGFUNCTION:f("aggregative",1,1),RANK:f("window",0,Number.POSITIVE_INFINITY),RSUM:f("window",1,2),RAVG:f("window",1,2),YTDSUM:f("window",1,1),QTDSUM:f("window",1,1),MTDSUM:f("window",1,1),WTDSUM:f("window",1,1),YTDAVG:f("window",1,1),QTDAVG:f("window",1,1),MTDAVG:f("window",1,1),WTDAVG:f("window",1,1),CONCAT:f("string",2,Number.POSITIVE_INFINITY),LEFT:f("string",2,2),RIGHT:f("string",2,2),ABS:f("scalar",1,1),ACOS:f("scalar",1,1),ASIN:f("scalar",1,1),ATAN:f("scalar",1,1),CEILING:f("scalar",1,1),CONTRIBUTION:f("scalar",1,1),COS:f("scalar",1,1),COT:f("scalar",1,1),DIFFPASTDAY:f("scalar",1,1),DIFFPASTMONTH:f("scalar",1,1),DIFFPASTPERIOD:f("scalar",1,1),DIFFPASTQUARTER:f("scalar",1,1),DIFFPASTWEEK:f("scalar",1,1),DIFFPASTYEAR:f("scalar",1,1),EXP:f("scalar",1,1),FLOOR:f("scalar",1,1),GROWTH:f("growth",1,1),GROWTHPASTMONTH:f("growth",1,1),GROWTHPASTQUARTER:f("growth",1,1),GROWTHPASTWEEK:f("growth",1,1),GROWTHPASTYEAR:f("growth",1,1),GROWTHRATE:f("growth",1,1),LN:f("scalar",1,1),LOG10:f("scalar",1,1),MINUS:f("scalar",1,1),MOD:f("scalar",2,2),QUOTIENT:f("scalar",2,2),PASTDAY:f("date",1,2),PASTMONTH:f("date",1,2),PASTPERIOD:f("date",1,2),PASTQUARTER:f("date",1,2),PASTWEEK:f("date",1,2),PASTYEAR:f("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:f("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:f("scalar",1,1),POWER:f("scalar",2,2),ROUND:f("scalar",2,2),SIN:f("scalar",1,1),SQRT:f("scalar",1,1),TAN:f("scalar",1,1)},qr=Object.keys(X).filter(e=>X[e].category==="xdiff");function pt(){return qr}function gt(e){const t=X[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function Sr(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 xr=/\[(\w[\w.-]*)\]/g,yt=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),Dr=new RegExp(`\\b(${Array.from(yt).join("|")})\\s*\\(`,"i");function ht(e){return S(e)?!0:typeof e=="string"&&e.startsWith(C)?!1:D(e)&&"kind"in e?e.kind==="measure":!0}function $r(e){const t=/\b(\w+)\s*\(/g,r=new Set;let s;for(;(s=t.exec(e))!==null;){const n=s[1];yt.has(n.toUpperCase())||r.add(n)}return Array.from(r)}function Or(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function Mr(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const V=e=>e.startsWith("[")?e:`[${e}]`,bt=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function Ft(e,t){if(t.length===0)return[];const r=t.map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),s=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(s)].map(n=>({functionName:n[1].toUpperCase(),ref1:n[2].trim(),ref2:n[3].trim()}))}function vr(e,t,r){var o,a,u;const s=Object.keys(t),n=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=n===""?"":n.endsWith(" ")?n:`${n} `;return{formula:e,context:t,contextKeys:s,canonicalContextKeys:new Set(s.map(V)),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 M(e,t){e.result.errors.push(t),e.result.isValid=!1}const Nr=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function Rr(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(s=>!Nr.has(s[1].toUpperCase()));r&&M(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function Ir(e,t){const r=e[t];let s=t+1;for(;s<e.length;){const n=e[s],i=e[s+1];if(n!==r){s++;continue}if(i===r){s+=2;continue}return s+1}return e.length}function Pr(e){return v.splitAtDepthZero(e,",").filter(t=>t.trim().length>0).length}function Lr(e,t,r,s){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const n=t,i=v.findMatchingCloseParen(e,n);if(i===-1)return n+1;const o=e.slice(n+1,i);return s.push({name:r.toUpperCase(),argCount:Pr(o)}),s.push(...At(o)),i+1}function At(e){const t=[];let r=0;for(;r<e.length;){const s=e[r];if(s==="'"||s==='"'){r=Ir(e,r);continue}if(/[A-Za-z_]/.test(s)){const n=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(n,r);r=Lr(e,r,i,t);continue}r++}return t}function kr(e){const t=At(e.formula),r=new Set,s=new Set;for(const{name:n,argCount:i}of t){if(Tr.has(n)){r.has(n)||(r.add(n),M(e,`${e.errorPrefix}args[1]: Function ${n} is not supported in custom formulas`));continue}const o=X[n];if(o&&(i<o.minArgs||i>o.maxArgs)&&!s.has(n)){s.add(n);const a=Sr(o.minArgs,o.maxArgs);M(e,`${e.errorPrefix}args[1]: Function ${n} accepts ${a}`)}}}function Br(e){return[...new Set([...e.matchAll(new RegExp(xr.source,"g"))].map(t=>t[1]))]}function zr(e){const t=e.result.references.filter(n=>!e.canonicalContextKeys.has(V(n)));if(t.length===0)return;const r=e.contextKeys.map(n=>`[${bt(n)}]`).join(", "),s=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;M(e,`${e.errorPrefix}args[1]: ${s} not found in context. Available keys: ${r}`)}function Ur(e){if(Dr.test(e.formula))return;const t=e.result.references.filter(r=>{var n;const s=(n=e.context[V(r)])!=null?n:e.context[r];return s!==void 0&&!ht(s)});t.length!==0&&M(e,`${e.errorPrefix}args[1]: ${Mr($r(e.formula))}Bracket reference(s) ${Or(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function _r(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(V)),r=e.contextKeys.filter(i=>!t.has(V(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const s=r.map(i=>`[${bt(i)}]`).join(", "),n=`${e.errorPrefix}args[2]: Context keys ${s} are defined but not used in formula`;e.errorOnUnusedContext?M(e,n):e.warnUnusedContext&&e.result.warnings.push(n)}function ke(e,t,r,s){var o;const n=(o=s.context[V(e)])!=null?o:s.context[e];if(n===void 0)return;if(!(typeof n=="string"&&n.startsWith(C))){ht(n)&&M(s,`${s.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${C}Table.Column.Level).`);return}if(s.schemaIndex)try{const a=Ee(n,s.schemaIndex);c.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&M(s,`${s.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):M(s,`${s.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";M(s,`${s.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function Vr(e){const t=pt(),r=Ft(e.formula,t);for(const s of r){const n=gt(s.functionName);ke(s.ref1,s,n,e),ke(s.ref2,s,n,e)}}function Wr(e,t,r={}){var n;const s=vr(e,t,r);return!e||e.trim().length===0?((n=r.allowEmptyFormula)!=null&&n||M(s,`${s.errorPrefix}args[1]: Formula cannot be empty`),s.result):(Rr(s),kr(s),s.result.references=Br(e),s.result.references.length===0?(s.result.warnings.push(`${s.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),s.result):s.contextKeys.length===0?(M(s,`${s.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),s.result):(zr(s),Ur(s),_r(s),Vr(s),s.result))}function jr(e,t,r={}){const s=Wr(e,t,r);if(!s.isValid)throw new Error(s.errors.join("; "));s.warnings.length>0&&console.warn("Formula validation warnings:",s.warnings.join("; "))}function Kr(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 s=r,n=e[2];if(!D(n))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${n===null?"null":typeof n}`);const i=n;jr(s,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=Jr(s),a={};for(const[u,l]of Object.entries(i)){const g=`args[2].${u}`;if(S(l))a[`${u}`]=O({data:l,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:g}});else if(typeof l=="string"&&l.startsWith(C)){const d=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,m=o[d];try{a[`${u}`]=Y(l,t.dataSource,t.schemaIndex,m!==void 0?{inferredDateLevel:m}:void 0)}catch(F){const y=F instanceof Error?F.message:"Unknown error";throw new Error(`${g}: ${y}`)}}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 (${C}...), but got: ${typeof l}`)}e[2]=a}function Jr(e){const t=pt(),r=Ft(e,t),s={};for(const n of r){const i=gt(n.functionName);if(i!==void 0)for(const o of[n.ref1,n.ref2]){const a=s[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}).`);s[o]=i}}return s}function Et(e){return e.type===c.MetadataTypes.TextAttribute}function wt(e){return e.type===c.MetadataTypes.NumericAttribute}function Yr(e){return e.type===c.MetadataTypes.DateLevel}function Gr(e){return Et(e)||wt(e)}function re(e){return e.type===c.MetadataTypes.TextAttribute?"text":e.type===c.MetadataTypes.NumericAttribute?"numeric":e.type===c.MetadataTypes.DateLevel?"date/datetime":"unknown"}function Ce(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 Be(e,t){const r=Ce(e,t);if(!Gr(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${re(r)} attribute`)}function k(e,t){const r=Ce(e,t);if(!wt(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${re(r)} attribute`)}function B(e,t){const r=Ce(e,t);if(!Et(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${re(r)} attribute`)}function Qr(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 Hr(e,t){const r=Qr(e,t);if(!c.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`)}const Xr={"measureFactory.customFormula":Kr,"filterFactory.equals":Be,"filterFactory.doesntEqual":Be,"filterFactory.greaterThan":k,"filterFactory.greaterThanOrEqual":k,"filterFactory.lessThan":k,"filterFactory.lessThanOrEqual":k,"filterFactory.between":k,"filterFactory.betweenNotEqual":k,"filterFactory.numeric":k,"filterFactory.contains":B,"filterFactory.doesntContain":B,"filterFactory.startsWith":B,"filterFactory.doesntStartWith":B,"filterFactory.endsWith":B,"filterFactory.doesntEndWith":B,"filterFactory.like":B,"filterFactory.exclude":Hr};function Zr(e){return Xr[`${e}`]}const Ct={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!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},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1}],"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.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 Te(e){return Ct[`${e}`]}function es(e){const t=Te(e);return t?t.filter(r=>r.required).length:0}function ts(e){const t=Te(e);return t?t.length:0}function rs(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 s=new Date(e);return!isNaN(s.getTime())}function ae(e,t,r,s){if(e.startsWith(C))try{return Y(e,t,r)}catch(n){const i=n instanceof Error?n.message:"Unknown error";throw new Error(`${s}: ${i}`)}throw new Error(`${s}: Invalid attribute '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`)}function ss(e,t,r,s){if(e.startsWith(C))try{return yr(e,t,r)}catch(n){const i=n instanceof Error?n.message:"Unknown error";throw new Error(`${s}: ${i}`)}throw new Error(`${s}: Invalid date dimension string '${e}'. Expected format: '${C}TableName.ColumnName'`)}function ns(e){const t=e.data,{argSchema:r,dataSource:s,schemaIndex:n,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 ae(t,s,n,o);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 ae(a,s,n,`${o}[${u}]`)});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 O({data:t,context:{dataSource:s,schemaIndex:n,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 O({data:a,context:{dataSource:s,schemaIndex:n,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 O({data:t,context:{dataSource:s,schemaIndex:n,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 O({data:a,context:{dataSource:s,schemaIndex:n,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 O({data:a,context:{dataSource:s,schemaIndex:n,pathPrefix:`${o}[${u}]`}})});if(S(t))return O({data:t,context:{dataSource:s,schemaIndex:n,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 ss(t,s,n,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=ae(t,s,n,o);if(!Yr(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${re(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(S(t))return O({data:t,context:{dataSource:s,schemaIndex:n,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(rs(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 O(e){const{data:t}=e,{dataSource:r,schemaIndex:s,pathPrefix:n}=e.context,{function:i,args:o}=t,a=n?`${n}.`:"",u=Te(i);if(!u){const y=Object.keys(Ct),p=R(i,y,T=>T),A=p&&p.distance<=x?` Did you mean '${p.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${A}`)}const l=es(i),g=ts(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=[],m=[];for(let y=0;y<Math.max(o.length,u.length);y++){const p=u[`${y}`],A=o[`${y}`],T=a?`${a}args[${y}]`:`args[${y}]`;if(A===void 0){p!=null&&p.required&&m.push(`${T}: Missing required argument (expected ${p.type})`);continue}if(!p){m.push(`${T}: Unexpected argument`);continue}try{const N=ns({data:A,context:{dataSource:r,schemaIndex:s,pathPrefix:T,argSchema:p}});d.push(N)}catch(N){const se=N instanceof Error?N.message:"Unknown error";m.push(se)}}if(m.length>0){const y=m.join("; ");throw new Error(y)}const F=Zr(i);if(F)try{F(d,{dataSource:r,schemaIndex:s,pathPrefix:a})}catch(y){const p=y instanceof Error?y.message:"Unknown validation error";throw new Error(p)}return Cr(i,d)}function Tt(e){const{attribute:t,config:r}=e;if(c.isMembersFilter(e)&&c.isLevelAttribute(t)){const{granularity:s}=t,n=e.members.map(a=>s==="Years"&&!isNaN(Number(a))?`${a}-01-01T00:00:00`:a),i=c.simplifyFilterConfig(r),o=Object.keys(i).length===0?void 0:i;return c.members(t,n,o)}return e}function is(e){let t=[];for(const r of e)Q(r)?t=c.mergeFiltersOrFilterRelations(r,t):t=c.mergeFiltersOrFilterRelations([Tt(r)],t);return t!=null?t:[]}const os=e=>{const{data:t}=e,{dataSource:r,schemaIndex:s}=e.context,n=[],i=[];return t.forEach((o,a)=>{const u={category:"filters",index:a,input:o};try{const l=O({data:o,context:{dataSource:r,schemaIndex:s,pathPrefix:""}});!Q(l)&&!te(l)?i.push(E(h({},u),{message:"Invalid filter JSON"})):n.push(l)}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(E(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:is(n)}},qe=e=>{const{data:t}=e,{dataSource:r,schemaIndex:s}=e.context;return t?dt(t)?os({data:t,context:{dataSource:r,schemaIndex:s}}):{success:!1,errors:[{category:"filters",index:-1,input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},as=e=>{const{data:t}=e,{dataSource:r,schemaIndex:s}=e.context,n=[],i=[];return t.forEach((o,a)=>{const u={category:"highlights",index:a,input:o};try{const l=O({data:o,context:{dataSource:r,schemaIndex:s,pathPrefix:""}});te(l)?n.push(Tt(l)):i.push(E(h({},u),{message:"Invalid filter JSON"}))}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(E(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:n}},Se=e=>{const{data:t}=e,{dataSource:r,schemaIndex:s}=e.context;return t?dt(t)?as({data:t,context:{dataSource:r,schemaIndex:s}}):{success:!1,errors:[{category:"highlights",index:-1,input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},us=(e,t)=>{if(e&&!c.isSortDirection(e))return E(h({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},ls=(e,t,r)=>{const{dataSource:s,schemaIndex:n}=t;try{const i=O({data:e,context:{dataSource:s,schemaIndex:n,pathPrefix:""}});return Fe(i)?{success:!0,data:i}:{success:!1,errors:[E(h({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[E(h({},r),{message:o})]}}},cs=(e,t,r,s)=>{const n=O({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Fe(n))return{style:{},error:E(h({},s),{message:"Invalid measure JSON"})};const i=us(e.sortType,s);if(i){const a=c.omit(e,"column");return{measure:n,style:a,error:i}}const o=c.omit(e,"column");return{measure:n,style:o}},ds=(e,t,r,s)=>{if(pr(e))return cs(e,t,r,s);if(S(e)){const n=ls(e,{dataSource:t,schemaIndex:r},s);return n.success?{measure:n.data}:{error:n.errors[0]}}return{error:E(h({},s),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},qt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:s}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{category:"measures",index:-1,input:t,message:"Invalid measures JSON. Expected an array."}]};const n=[],i=[];return t.forEach((o,a)=>{const u={category:"measures",index:a,input:o};try{const l=ds(o,r,s,u);if(l.error){i.push(l.error);return}l.measure&&n.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(E(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:n}};function G(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(G):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,G(r)])):e}function w(e,t,r){const s=e();if(!s.success){const n=r?s.errors.map(r):s.errors;return t.push(...n),null}return s.data}const fs=e=>{const{data:t}=e,{dataSource:r,tables:s}=e.context,n=Ae(s),i=[],o=w(()=>mt({data:t.dimensions||[],context:{dataSource:r,schemaIndex:n}}),i),a=w(()=>qt({data:t.measures||[],context:{dataSource:r,schemaIndex:n}}),i),u=w(()=>qe({data:t.filters||[],context:{dataSource:r,schemaIndex:n}}),i);let l=null;return t.highlights&&(l=w(()=>Se({data:t.highlights||[],context:{dataSource:r,schemaIndex:n}}),i)),i.length>0?{success:!1,errors:i}:{success:!0,data:h({dataSource:c.convertDataSource(r),dimensions:o?c.adaptDimensionsForQuery(o):[],measures:a?c.adaptMeasuresForQuery(a):[],filters:u||[]},l&&{highlights:l})}};function ze(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function xe(e){const t=[],r=[];return e.forEach((s,n)=>{var d,m,F;const i=ze(s)?s.column:s,o=ze(s)?s:void 0,a=()=>typeof i.toJSON=="function"?i.toJSON():i;if(!i.composeCode){r.push({category:"dimensions",index:n,input:a(),message:`Dimension at index ${n} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(C)){r.push({category:"dimensions",index:n,input:a(),message:`Expected composeCode to start with '${C}' for dimension at index ${n} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(F=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?F:((d=i.getSort)==null?void 0:d.call(i))!==void 0&&((m=i.getSort)==null?void 0:m.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 y=h(h({column:i.composeCode},u!==void 0&&u!==c.Sort.None&&{sortType:c.convertSortToSortDirection(u)}),l);t.push(y)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const me="Unknown error";function De(e){if(!e)return{success:!0,data:[]};const t=[];if(c.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{category:"filters",index:-1,input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[v.parseComposeCodeToFunctionCall(e.composeCode)]}}catch(s){const n=s instanceof Error?s.message:me;return{success:!1,errors:[{category:"filters",index:-1,input:e,message:`Failed to parse composeCode for FilterRelations: ${n}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((s,n)=>{var i;if(!s.composeCode){t.push({category:"filters",index:n,input:s,message:`Filter at index ${n} (${(i=s.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=v.parseComposeCodeToFunctionCall(s.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:me;t.push({category:"filters",index:n,input:s,message:`Failed to parse composeCode for filter at index ${n}: ${a}. ComposeCode: '${s.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function $e(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((s,n)=>{var i;if(!s.composeCode){r.push({category:"highlights",index:n,input:s,message:`Highlight filter at index ${n} (${(i=s.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=v.parseComposeCodeToFunctionCall(s.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:me;r.push({category:"highlights",index:n,input:s,message:`Failed to parse composeCode for highlight filter at index ${n}: ${a}. ComposeCode: '${s.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Ue(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function Oe(e){const t=[],r=[];return e.forEach((s,n)=>{var u,l,g;const i=Ue(s)?s.column:s,o=Ue(s)?s:void 0,a=()=>typeof i.toJSON=="function"?i.toJSON():i;if(!i.composeCode){r.push({category:"measures",index:n,input:a(),message:`Measure at index ${n} (${i.name||"unnamed"}) is missing composeCode`});return}try{const d=v.parseComposeCodeToFunctionCall(i.composeCode),m=(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(m!==void 0&&m!==c.Sort.None||o&&Object.keys(c.omit(o,"column")).length>0){const y=o?c.omit(o,"column"):{},p=h(h({column:d},m!==void 0&&m!==c.Sort.None&&{sortType:c.convertSortToSortDirection(m)}),y);t.push(p)}else t.push(d)}catch(d){const m=d instanceof Error?d.message:"Unknown error";r.push({category:"measures",index:n,input:a(),message:`Failed to parse composeCode for measure at index ${n} (${i.name||"unnamed"}): ${m}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function _e(e){var t,r,s,n;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((n=(s=e.name)==null?void 0:s.startsWith(c.TREND_PREFIX))!=null?n:!1)}function Ve(e){var t,r,s,n;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((n=(s=e.name)==null?void 0:s.startsWith(c.FORECAST_PREFIX))!=null?n:!1)}function We(e){try{const t=v.parseComposeCodeToFunctionCall(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function ms(e){var s,n,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(_e(a)||Ve(a)){r.push(a);continue}const u=(s=a.name)!=null?s:"Measure",l=`${c.TREND_PREFIX}_${u}`,g=`${c.FORECAST_PREFIX}_${u}`;let d,m,F=o+1;if(F<e.length&&!t.has(F)&&_e(e[F])&&e[F].name===l){const y=(n=e[F].composeCode)==null?void 0:n.trim();y&&(d=We(y),t.add(F),F++)}if(F<e.length&&!t.has(F)&&Ve(e[F])&&e[F].name===g){const y=(i=e[F].composeCode)==null?void 0:i.trim();y&&(m=We(y),t.add(F))}d!==void 0||m!==void 0?r.push(h(h({column:a},d&&Object.keys(d).length>0&&{trend:d}),m&&Object.keys(m).length>0&&{forecast:m})):r.push(a)}return r}function ps(e){const t=[],r=w(()=>xe(e.dimensions||[]),t),s=ms(e.measures||[]),n=w(()=>Oe(s),t),i=w(()=>De(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=w(()=>$e(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=h({dimensions:r||[],measures:n||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:G(a)}}const St=new Set(c.ALL_CHART_TYPES.filter(e=>e!=="image")),je=Object.freeze([...St]),ue=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"]}},ys=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),hs=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function bs(e){const t=gs[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function xt(e){return typeof e=="string"&&St.has(e)}function Fs(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||ys.has(e))return!0;if(hs.has(e))return!1;const s=Array.isArray(t)?t[0]:t;if(!s)return!0;let n;return D(s)&&"column"in s&&(n=s.column),!(S(s)||n!==void 0&&S(n))}function As(e){const t=[],r={chartType:"",dataOptions:{}};if(!D(e))return t.push({category:"chartType",index:-1,input:e,message:"Expected an object"}),{normalized:r,errors:t};const s=e.chartType;if(s===void 0){const i=Object.keys(e),o=R("chartType",i,l=>l),a=o&&o.distance<=x?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=x?{[o.best]:e[o.best]}:e;t.push({category:"chartType",index:-1,input:u,message:`chartType is required.${a}`})}else if(xt(s))r.chartType=s;else{const i=R(String(s),je,u=>u),o=i&&i.distance<=x?` Did you mean '${i.best}'?`:"",a=je.slice(0,8).join(", ");t.push({category:"chartType",index:-1,input:s,message:`Invalid chartType '${s}'. Valid types: ${a}, ...${o}`})}const n=e.dataOptions;if(n===void 0){const i=Object.keys(e),o=R("dataOptions",i,l=>l),a=o&&o.distance<=x?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=x?{[o.best]:e[o.best]}:e;t.push({category:"dataOptions",index:-1,input:u,message:`dataOptions is required.${a}`})}else n!==null&&typeof n=="object"&&(r.dataOptions=n);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 Es(e){return e.map(({attribute:t,style:r})=>r?h({column:t},r):t)}function ws(e){return e.map(({measure:t,style:r})=>r?h({column:t},r):t)}function Dt(e){return Array.isArray(e)?e:[e]}function pe(e){return t=>E(h({},t),{category:"dataOptions",index:e})}function Z(e,t,r,s,n){const i=t?Dt(t):[];if(i.length===0)return[];if(r==="dimension"){const a=w(()=>mt({data:i,context:s}),n,pe(e));return a!==null?Es(a):null}const o=w(()=>qt({data:i,context:s}),n,pe(e));return o!==null?ws(o):null}function Ke(e,t,r){const s=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=xe(s);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>E(h({},o),{category:"dataOptions",index:e}))}}const n=Oe(s);return n.success?{success:!0,data:n.data}:{success:!1,errors:n.errors.map(i=>E(h({},i),{category:"dataOptions",index:e}))}}function Cs(e,t){let r;D(e)&&"column"in e&&(r=e.column);const n=!(S(e)||r!==void 0&&S(r))?"dimension":"measure",i=[],o=Z("columns",[e],n,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function Ts(e,t,r,s){const n=[];for(const i of e){const o=w(()=>Cs(i,t),r,s);o&&n.push(...o)}return n}function qs(e,t,r){if(!e||!D(e))return r.push({category:"dataOptions",index:-1,input:e,message:"dataOptions is required"}),null;const s={},{chartType:n}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const d of a)if(!ue.has(d)){const m=R(d,[...ue],y=>y),F=m&&m.distance<=x?` Did you mean '${m.best}'?`:"";m&&m.distance<=x&&u.set(d,m.best),r.push({category:"dataOptions",index:d,input:o[d],message:`Unknown dataOptions key '${d}'.${F}`})}const l=n?bs(n):void 0;if(l){for(const d of a)if(d!=="seriesToColorMap"&&!l.validAxes.has(d)&&ue.has(d)){const m=R(d,[...l.validAxes],p=>p),F=m&&m.distance<=x?` Did you mean '${m.best}'?`:"",y=[...l.validAxes].join(", ");r.push({category:"dataOptions",index:d,input:o[d],message:`Axis '${d}' is not valid for chart type '${n}'. Valid axes: ${y}.${F}`})}for(const d of l.requiredAxes)[...u.values()].includes(d)||(!(d in o)||o[d]==null)&&r.push({category:"dataOptions",index:d,input:null,message:`Chart type '${n}' requires '${l.requiredAxes.join("' and '")}'. Missing: ${d}.`});n==="indicator"&&(["value","secondary","min","max"].some(F=>F in o&&o[F]!=null)||r.push({category:"dataOptions",index:-1,input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),n==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({category:"dataOptions",index:-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,m]of g){if(!m)continue;if(d==="seriesToColorMap"){s[d]=m;continue}if(d==="columns"){s[d]=Ts(Dt(m),t,r,pe("columns"));continue}const F=Fs(d,m,n)?"dimension":"measure",y=Z(d,m,F,t,r);if(y!==null){const p=n==="calendar-heatmap"&&d==="value";s[d]=p||!Array.isArray(m)?y[0]:y}}return r.length>i?null:s}function Ss(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const xs=e=>{var p;const{data:t,context:r}=e,{dataSource:s,tables:n}=r,{normalized:i,errors:o}=As(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=Ae(n),l=[];let g=qs(i.dataOptions,{dataSource:s,schemaIndex:u,chartType:a},l);if(a==="boxplot"&&g){const A=Ss((p=i.styleOptions)==null?void 0:p.subtype),T=A==="iqr"||A==="standardDeviation";g=E(h({},g),{boxType:A,outliersEnabled:T})}let d=null;i.filters&&i.filters.length>0&&(d=w(()=>qe({data:i.filters||[],context:{dataSource:s,schemaIndex:u}}),l));let m=null;if(i.highlights&&i.highlights.length>0&&(m=w(()=>Se({data:i.highlights||[],context:{dataSource:s,schemaIndex:u}}),l)),l.length>0||g===null)return{success:!1,errors:l};if(!xt(i.chartType))return{success:!1,errors:[{category:"chartType",index:-1,input:i.chartType,message:"Invalid chartType"}]};const F=i.chartType;return{success:!0,data:h(h(h({dataSet:c.convertDataSource(s),chartType:F,dataOptions:g},i.styleOptions&&{styleOptions:i.styleOptions}),d&&{filters:d}),m&&{highlights:m})}},Ds=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{category:"dimensions",index:-1,input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{category:"dimensions",index:-1,input:e,message:"dataOptions is required"}]};let r=null;const s=$s(e.dataOptions);s.success?r=s.data:t.push(...s.errors);let n;if(e.filters){const u=w(()=>De(e.filters),t);n=u!=null?u:void 0}let i;if(e.highlights&&e.highlights.length>0){const u=w(()=>$e(e.highlights),t);i=u!=null?u:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=h(h(h({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),n&&n.length>0&&{filters:n}),i&&i.length>0&&{highlights:i});return{success:!0,data:G(o)}};function $s(e){const t={},r=[],s=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[n,i]of Object.entries(e)){if(n==="seriesToColorMap"&&i){t[n]=i;continue}if(s.has(n)||i==null){i!=null&&(t[n]=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],F=Os(d)?xe([d]):Oe([d]);F.success?u.push(...F.data):F.errors.forEach(y=>{var p;l.push(E(h({},y),{index:g,input:(p=y.input)!=null?p:d}))})}if(l.length>0){r.push(...l);continue}t[n]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Os(e){const t=Array.isArray(e)?e[0]:e;if(!t||!D(t))return!0;const r="column"in t&&t.column!=null&&D(t.column)?t.column:t;if("composeCode"in r){const s=r.composeCode;if(typeof s=="string"&&s.startsWith("DM."))return!0;if(typeof s=="string"&&(s.includes("measureFactory")||s.includes("Formula")))return!1}if("type"in r){const s=r.type;if(s==="basemeasure"||s==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const Je=["rows","columns","values","grandTotals"];function Ms(e){if(!D(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function vs(e){const t=[],r={dataOptions:{}};if(!D(e))return t.push({category:"dataOptions",index:-1,input:e,message:"Expected an object"}),{normalized:r,errors:t};const s=e.dataOptions;if(s===void 0){const n=Object.keys(e),i=R("dataOptions",n,u=>u),o=i&&i.distance<=x?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=x?{[i.best]:e[i.best]}:e;t.push({category:"dataOptions",index:-1,input:a,message:`dataOptions is required.${o}`})}else if(D(s)){const n=s;r.dataOptions=n;for(const o of Object.keys(n))if(!Je.includes(o)){const a=R(o,[...Je],l=>l),u=a&&a.distance<=x?` Did you mean '${a.best}'?`:"";t.push({category:"dataOptions",index:o,input:n[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=n[o];a!=null&&!Array.isArray(a)&&t.push({category:"dataOptions",index:o,input:a,message:`dataOptions.${o} must be an array`})}const i=n.grandTotals;i!=null&&!Ms(i)&&t.push({category:"dataOptions",index:"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 Ns(e,t,r){if(!e||typeof e!="object")return r.push({category:"dataOptions",index:-1,input:e,message:"dataOptions is required"}),null;const s={},n=r.length;for(const o of["rows","columns"]){const a=Z(o,e[o],"dimension",t,r);a&&(s[o]=a)}const i=Z("values",e.values,"measure",t,r);return i&&(s.values=i),e.grandTotals!==void 0&&(s.grandTotals=e.grandTotals),r.length>n?null:s}const Rs=e=>{const{data:t,context:r}=e,{dataSource:s,tables:n}=r,{normalized:i,errors:o}=vs(t);if(o.length>0)return{success:!1,errors:o};const a=Ae(n),u=[],l=Ns(i.dataOptions,{dataSource:s,schemaIndex:a},u);let g=null;i.filters&&i.filters.length>0&&(g=w(()=>qe({data:i.filters||[],context:{dataSource:s,schemaIndex:a}}),u));let d=null;return i.highlights&&i.highlights.length>0&&(d=w(()=>Se({data:i.highlights||[],context:{dataSource:s,schemaIndex:a}}),u)),u.length>0||l===null?{success:!1,errors:u}:{success:!0,data:h(h(h({dataSet:c.convertDataSource(s),dataOptions:l},i.styleOptions&&{styleOptions:i.styleOptions}),g&&{filters:g}),d&&{highlights:d})}},Is=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{category:"dataOptions",index:-1,input:e,message:"dataOptions is required"}]};const r=e.dataOptions,s={};for(const l of["rows","columns"]){const g=r[l];if(g&&g.length>0){const d=Ke(l,g,"dimension");d.success?s[l]=d.data:t.push(...d.errors)}}const n=r.values;if(n&&n.length>0){const l=Ke("values",n,"measure");l.success?s.values=l.data:t.push(...l.errors)}r.grandTotals!==void 0&&(s.grandTotals=r.grandTotals);let i;if(e.filters){const l=w(()=>De(e.filters),t);i=l!=null?l:void 0}let o;if(e.highlights&&e.highlights.length>0){const l=w(()=>$e(e.highlights),t);o=l!=null?l:void 0}if(t.length>0)return{success:!1,errors:t};const a=h(h(h({dataOptions:s},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:G(a)}};function Ps(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 Ls(e,t,r=!1){const s=Ps(e),n=c.prepareQueryParams(s,t);return c.getJaqlQueryPayload(n,r)}exports.EMPTY_EXPANDED_QUERY_MODEL=L.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=L.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=L.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=L.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=L.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=L.isClientSideWidgetCodeParams;exports.CustomSuperJSON=fr;exports.translateChartFromJSON=xs;exports.translateChartToJSON=Ds;exports.translatePivotTableFromJSON=Rs;exports.translatePivotTableToJSON=Is;exports.translateQueryFromJSON=fs;exports.translateQueryToJSON=ps;exports.translateQueryToJaql=Ls;
1
+ "use strict";var Rt=Object.defineProperty,vt=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var Re=Object.getOwnPropertySymbols;var Pt=Object.prototype.hasOwnProperty,Lt=Object.prototype.propertyIsEnumerable;var ve=(e,t,r)=>t in e?Rt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))Pt.call(t,r)&&ve(e,r,t[r]);if(Re)for(var r of Re(t))Lt.call(t,r)&&ve(e,r,t[r]);return e},A=(e,t)=>vt(e,It(t));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../types-COBvZZm_.cjs"),c=require("../apply-styled-options-to-query-COD9fRYD.cjs"),Q=require("../dimensions-u3w5qNF0.cjs");function Bt(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 ye(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 kt(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 zt(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 Ut(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function U(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=Qe(s);return{function:n,args:i}}function Qe(e){return e.trim()?ye(e,",").map(He):[]}function He(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=Qe(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?Vt(r):{}}return e.includes("(")&&e.includes(")")?U(e):(e.startsWith("DM."),e)}function _t(e){const t=kt(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=Ut(e.slice(0,t).trim()),n=He(e.slice(t+1).trim());return[r,n]}function Vt(e){if(!e.trim())return{};const t=ye(e,",").map(_t).filter(([,r])=>r!==null);return Object.fromEntries(t)}class Wt{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 Xe{constructor(t){this.generateIdentifier=t,this.kv=new Wt}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 jt extends Xe{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 Kt(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 Jt(e,t){const r=Kt(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 _(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function X(e,t){return e.indexOf(t)!==-1}function Ie(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class Yt{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return Jt(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const Gt=e=>Object.prototype.toString.call(e).slice(8,-1),Ze=e=>typeof e=="undefined",Qt=e=>e===null,j=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,ce=e=>j(e)&&Object.keys(e).length===0,I=e=>Array.isArray(e),Ht=e=>typeof e=="string",Xt=e=>typeof e=="number"&&!isNaN(e),Zt=e=>typeof e=="boolean",er=e=>e instanceof RegExp,K=e=>e instanceof Map,J=e=>e instanceof Set,et=e=>Gt(e)==="Symbol",tr=e=>e instanceof Date&&!isNaN(e.valueOf()),rr=e=>e instanceof Error,Pe=e=>typeof e=="number"&&isNaN(e),nr=e=>Zt(e)||Qt(e)||Ze(e)||Xt(e)||Ht(e)||et(e),sr=e=>typeof e=="bigint",ir=e=>e===1/0||e===-1/0,or=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),ar=e=>e instanceof URL,tt=e=>e.replace(/\./g,"\\."),ie=e=>e.map(String).map(tt).join("."),W=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 v(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const rt=[v(Ze,"undefined",()=>null,()=>{}),v(sr,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),v(tr,"Date",e=>e.toISOString(),e=>new Date(e)),v(rr,"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}),v(er,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),v(J,"set",e=>[...e.values()],e=>new Set(e)),v(K,"map",e=>[...e.entries()],e=>new Map(e)),v(e=>Pe(e)||ir(e),"number",e=>Pe(e)?"NaN":e>0?"Infinity":"-Infinity",Number),v(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),v(ar,"URL",e=>e.toString(),e=>new URL(e))];function te(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const nt=te((e,t)=>et(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}),ur=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),st=te(or,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=ur[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function it(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const ot=te(it,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return h({},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)}),at=te((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)}),lr=[ot,nt,at,st],Le=(e,t)=>{const r=Ie(lr,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=Ie(rt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},ut={};rt.forEach(e=>{ut[e.annotation]=e});const cr=(e,t,r)=>{if(I(t))switch(t[0]){case"symbol":return nt.untransform(e,t,r);case"class":return ot.untransform(e,t,r);case"custom":return at.untransform(e,t,r);case"typed-array":return st.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=ut[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},z=(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 lt(e){if(X(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(X(e,"prototype"))throw new Error("prototype is not allowed as a property");if(X(e,"constructor"))throw new Error("constructor is not allowed as a property")}const fr=(e,t)=>{lt(t);for(let r=0;r<t.length;r++){const n=t[r];if(J(e))e=z(e,+n);else if(K(e)){const s=+n,i=+t[++r]==0?"key":"value",o=z(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},fe=(e,t,r)=>{if(lt(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(I(n)){const a=+o;n=n[a]}else if(j(n))n=n[o];else if(J(n)){const a=+o;n=z(n,a)}else if(K(n)){if(i===t.length-2)break;const u=+o,l=+t[++i]==0?"key":"value",g=z(n,u);switch(l){case"key":n=g;break;case"value":n=n.get(g);break}}}const s=t[t.length-1];if(I(n)?n[+s]=r(n[+s]):j(n)&&(n[s]=r(n[s])),J(n)){const i=z(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(K(n)){const i=+t[t.length-2],o=z(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 de(e,t,r=[]){if(!e)return;if(!I(e)){_(e,(i,o)=>de(i,t,[...r,...W(o)]));return}const[n,s]=e;s&&_(s,(i,o)=>{de(i,t,[...r,...W(o)])}),t(n,r)}function dr(e,t,r){return de(t,(n,s)=>{e=fe(e,s,i=>cr(i,n,r))}),e}function mr(e,t){function r(n,s){const i=fr(e,W(s));n.map(W).forEach(o=>{e=fe(e,o,()=>i)})}if(I(t)){const[n,s]=t;n.forEach(i=>{e=fe(e,W(i),()=>e)}),s&&_(s,r)}else _(t,r);return e}const pr=(e,t)=>j(e)||I(e)||K(e)||J(e)||it(e,t);function gr(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function yr(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(ie):r[ie(i)]=o.map(ie)}),n?ce(r)?[n]:[n,r]:ce(r)?void 0:r}const ct=(e,t,r,n,s=[],i=[],o=new Map)=>{var F;const a=nr(e);if(!a){gr(e,s,t);const y=o.get(e);if(y)return n?{transformedValue:null}:y}if(!pr(e,r)){const y=Le(e,r),p=y?{transformedValue:y.value,annotations:[y.type]}:{transformedValue:e};return a||o.set(e,p),p}if(X(i,e))return{transformedValue:null};const u=Le(e,r),l=(F=u==null?void 0:u.value)!=null?F:e,g=I(l)?[]:{},f={};_(l,(y,p)=>{if(p==="__proto__"||p==="constructor"||p==="prototype")throw new Error(`Detected property ${p}. This is a prototype pollution risk, please remove it from your object.`);const E=ct(y,t,r,n,[...s,p],[...i,e],o);g[p]=E.transformedValue,I(E.annotations)?f[p]=E.annotations:j(E.annotations)&&_(E.annotations,(T,N)=>{f[tt(p)+"."+N]=T})});const m=ce(f)?{transformedValue:g,annotations:u?[u.type]:void 0}:{transformedValue:g,annotations:u?[u.type,f]:f};return a||o.set(e,m),m};function ft(e){return Object.prototype.toString.call(e).slice(8,-1)}function Be(e){return ft(e)==="Array"}function hr(e){if(ft(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function br(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 me(e,t={}){if(Be(e))return e.map(s=>me(s,t));if(!hr(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(Be(t.props)&&!t.props.includes(i))return s;const o=e[i],a=me(o,t);return br(s,i,a,e,t.nonenumerable),s},{})}class b{constructor({dedupe:t=!1}={}){this.classRegistry=new jt,this.symbolRegistry=new Xe(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new Yt,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=ct(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=A(h({},s.meta),{values:n.annotations}));const i=yr(r,this.dedupe);return i&&(s.meta=A(h({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=me(r);return n!=null&&n.values&&(s=dr(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=mr(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(h({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}b.defaultInstance=new b;b.serialize=b.defaultInstance.serialize.bind(b.defaultInstance);b.deserialize=b.defaultInstance.deserialize.bind(b.defaultInstance);b.stringify=b.defaultInstance.stringify.bind(b.defaultInstance);b.parse=b.defaultInstance.parse.bind(b.defaultInstance);b.registerClass=b.defaultInstance.registerClass.bind(b.defaultInstance);b.registerSymbol=b.defaultInstance.registerSymbol.bind(b.defaultInstance);b.registerCustom=b.defaultInstance.registerCustom.bind(b.defaultInstance);b.allowErrorProps=b.defaultInstance.allowErrorProps.bind(b.defaultInstance);const k=e=>e===void 0?c.Sort.None:e,Fr=e=>new P.JaqlElement(e.metadataItem,e.type),he=e=>new c.DimensionalAttribute(e.name,e.expression,e.type,e.description,k(e.sort),e.dataSource,e.composeCode),be=e=>new c.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,k(e.sort),e.dataSource,e.composeCode),D=e=>{switch(e.__serializable){case"DimensionalAttribute":return he(e);case"DimensionalLevelAttribute":return be(e);default:return e}},dt=e=>new Q.DimensionalDimension(e.name,e.expression,e.attributes.map(D),e.dimensions.map(Er),e.type,e.description,k(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?D(e.defaultAttribute):void 0),mt=e=>new Q.DimensionalDateDimension(e.name,e.expression,e.description,k(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged),Er=e=>{switch(e.__serializable){case"DimensionalDimension":return dt(e);case"DimensionalDateDimension":return mt(e);default:return e}},Fe=e=>new c.DimensionalBaseMeasure(e.name,D(e.attribute),e.aggregation,e.format,e.description,k(e.sort),e.dataSource,e.composeCode),Ee=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,he(n)];case"DimensionalLevelAttribute":return[r,be(n)];case"DimensionalBaseMeasure":return[r,Fe(n)];case"DimensionalCalculatedMeasure":return[r,Ee(n)];default:return[r,n]}return[r,n]}));return new c.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,k(e.sort),e.dataSource,e.composeCode)},pt=e=>new c.DimensionalMeasureTemplate(e.name,D(e.attribute),e.format,e.description,k(e.sort),e.dataSource,e.composeCode),oe=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return Fe(e);case"DimensionalCalculatedMeasure":return Ee(e);case"DimensionalMeasureTemplate":return pt(e);default:return e}},q=e=>{switch(e.__serializable){case"MembersFilter":return new c.MembersFilter(D(e.attribute),e.members,e.config.backgroundFilter?A(h({},e.config),{backgroundFilter:q(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new c.LogicalAttributeFilter(e.filters.map(r=>q(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new c.CascadingFilter(e._filters.map(r=>q(r)),e.config,e.composeCode);case"ExcludeFilter":return new c.ExcludeFilter(q(e.filter),e.input?q(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new c.MeasureFilter(D(e.attribute),oe(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new c.RankingFilter(D(e.attribute),oe(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new c.MeasureRankingFilter(oe(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new c.NumericFilter(D(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new c.TextFilter(D(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new c.DateRangeFilter(D(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new c.RelativeDateFilter(D(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new c.CustomFilter(D(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};b.registerCustom({isApplicable:P.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>Fr(e)},"JaqlElement");b.registerCustom({isApplicable:c.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>he(e)},"DimensionalAttribute");b.registerCustom({isApplicable:c.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>be(e)},"DimensionalLevelAttribute");b.registerCustom({isApplicable:Q.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>dt(e)},"DimensionalDimension");b.registerCustom({isApplicable:Q.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>mt(e)},"DimensionalDateDimension");b.registerCustom({isApplicable:c.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>Fe(e)},"DimensionalBaseMeasure");b.registerCustom({isApplicable:c.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>Ee(e)},"DimensionalCalculatedMeasure");b.registerCustom({isApplicable:c.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>pt(e)},"DimensionalMeasureTemplate");b.registerCustom({isApplicable:c.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"MembersFilter");b.registerCustom({isApplicable:c.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"LogicalAttributeFilter");b.registerCustom({isApplicable:c.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"CascadingFilter");b.registerCustom({isApplicable:c.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"ExcludeFilter");b.registerCustom({isApplicable:c.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"MeasureFilter");b.registerCustom({isApplicable:c.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"RankingFilter");b.registerCustom({isApplicable:c.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"MeasureRankingFilter");b.registerCustom({isApplicable:c.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"NumericFilter");b.registerCustom({isApplicable:c.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"TextFilter");b.registerCustom({isApplicable:c.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"DateRangeFilter");b.registerCustom({isApplicable:c.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"RelativeDateFilter");b.registerCustom({isApplicable:c.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>q(e)},"CustomFilter");const Ar=b,C="DM.";function $(e){return typeof e=="object"&&e!==null}function S(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function gt(e){return e.every(S)}function re(e){return"attribute"in e&&"config"in e}function H(e){return"left"in e&&"right"in e&&"operator"in e}function Ae(e){return!re(e)&&!H(e)}function wr(e){return $(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function Cr(e){return!$(e)||!("column"in e)?!1:S(e.column)}const x=3;function R(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=Bt(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const yt="en";function ae(e,t){return e.localeCompare(t,yt,{sensitivity:"accent"})===0}function ke(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,yt,{sensitivity:"accent"})===0}function we(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 Ce(e,t){if(!e.startsWith(C))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);const r=e.slice(C.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);let n,s;for(const p of t.sortedTables)if(ke(r,p.name+".")){const E=r.slice(p.name.length+1);if(!E)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);n=p,s=E;break}if(!n){const p=r.indexOf(".");if(p===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`);const E=r.slice(0,p),T=R(E,t.sortedTables,se=>se.name),N=T&&T.distance<=x?` Did you mean '${T.best.name}'?`:"";throw new Error(`Table '${E}' not found in the data model.${N}`)}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 p of i){if(ae(s,p.name))return{table:n,column:p};if(!ke(s,p.name+"."))continue;const E=s.slice(p.name.length+1);if(!E)continue;const T=u.includes(E),N=c.isDatetime(p.dataType);if(T){if(N)return{table:n,column:p,level:E};o||(o=p,a=E);continue}N&&!o&&(o=p,a=E)}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 p=R(a,u,T=>T),E=p&&p.distance<=x?` Did you mean '${p.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${E}`)}const l=s.indexOf("."),g=l===-1?s:s.slice(0,l),f=R(s,i,p=>p.name),m=f&&f.distance<=x&&!ae(f.best.name,g),F=m?` Did you mean '${f.best.name}'?`:"",y=!m&&s.endsWith(".")&&f!==void 0&&ae(f.best.name,g)?` Use '${g}' without a trailing dot.`:"";throw new Error(`Column '${g}' not found in table '${n.name}'.${F}${y}`)}function Tr(e,t){const{table:r,column:n,level:s}=Ce(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}}function Y(e,t,r,n){const{table:s,column:i,level:o}=Tr(e,r);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}`,f=c.DateLevels.dateOnly;if(i.dataType==="date"&&!f.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 m=c.DateLevels.timeOnly;if(i.dataType==="time"&&!m.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 qr(e,t,r){const{column:n,level:s}=Ce(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${C}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 Q.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const Sr=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!c.isSortDirection(r))return A(h({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},xr=(e,t,r,n)=>{const s=Sr(e.sortType,n);if(s)return{attribute:Y(e.column,t,r),style:{},error:s};const i=Y(e.column,t,r),o=c.omit(e,"column");return{attribute:i,style:o}},$r=(e,t,r,n)=>typeof e=="string"?{attribute:Y(e,t,r)}:wr(e)?xr(e,t,r,n):{error:A(h({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},ht=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:[{category:"dimensions",index:-1,input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={category:"dimensions",index:a,input:o};try{const l=$r(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(A(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function Te(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 Dr(e,t){const r=e.replace("measureFactory.",""),s=Te(c.measureFactory,r)(...t);if(!Ae(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function Or(e,t){const r=e.replace("filterFactory.logic.",""),s=Te(c.logic,r)(...t);if(!H(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function Mr(e,t){if(e.startsWith("filterFactory.logic."))return Or(e,t);const r=e.replace("filterFactory.",""),s=Te(c.filterFactory,r)(...t);if(!re(s)&&!H(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function Nr(e,t){const n=e.split(".")[0];if(n==="measureFactory")return Dr(e,t);if(n==="filterFactory")return Mr(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const d=(e,t,r,n)=>h({category:e,minArgs:t,maxArgs:r},n),Rr=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),Z={SDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Seconds,argType:"datetime"}),MNDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Minutes,argType:"datetime"}),HDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Hours,argType:"datetime"}),DDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Days,argType:"datetime"}),MDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Months,argType:"datetime"}),QDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Quarters,argType:"datetime"}),YDIFF:d("xdiff",2,2,{requiredDateLevel:c.DateLevels.Years,argType:"datetime"}),ANYVALUE:d("aggregative",1,1),SUM:d("aggregative",1,2),AVG:d("aggregative",1,2),MIN:d("aggregative",1,2),MAX:d("aggregative",1,2),COUNT:d("aggregative",1,2),DUPCOUNT:d("aggregative",1,1),COUNTDUPLICATES:d("aggregative",1,1),STDEV:d("aggregative",1,2),STDEVP:d("aggregative",1,2),VAR:d("aggregative",1,2),VARP:d("aggregative",1,2),MEDIAN:d("aggregative",1,2),QUARTILE:d("aggregative",2,3),PERCENTILE:d("aggregative",2,3),LOWERWHISKERMAX_IQR:d("aggregative",1,1),LOWERWHISKERMAX_STDEVP:d("aggregative",1,1),UPPERWHISKERMIN_IQR:d("aggregative",1,1),UPPERWHISKERMIN_STDEVP:d("aggregative",1,1),OUTLIERSCOUNT_IQR:d("aggregative",1,1),OUTLIERSCOUNT_STDEVP:d("aggregative",1,1),MODE:d("aggregative",1,1),NOAGGFUNCTION:d("aggregative",1,1),RANK:d("window",0,Number.POSITIVE_INFINITY),RSUM:d("window",1,2),RAVG:d("window",1,2),YTDSUM:d("window",1,1),QTDSUM:d("window",1,1),MTDSUM:d("window",1,1),WTDSUM:d("window",1,1),YTDAVG:d("window",1,1),QTDAVG:d("window",1,1),MTDAVG:d("window",1,1),WTDAVG:d("window",1,1),CONCAT:d("string",2,Number.POSITIVE_INFINITY),LEFT:d("string",2,2),RIGHT:d("string",2,2),ABS:d("scalar",1,1),ACOS:d("scalar",1,1),ASIN:d("scalar",1,1),ATAN:d("scalar",1,1),CEILING:d("scalar",1,1),CONTRIBUTION:d("scalar",1,1),COS:d("scalar",1,1),COT:d("scalar",1,1),DIFFPASTDAY:d("scalar",1,1),DIFFPASTMONTH:d("scalar",1,1),DIFFPASTPERIOD:d("scalar",1,1),DIFFPASTQUARTER:d("scalar",1,1),DIFFPASTWEEK:d("scalar",1,1),DIFFPASTYEAR:d("scalar",1,1),EXP:d("scalar",1,1),FLOOR:d("scalar",1,1),GROWTH:d("growth",1,1),GROWTHPASTMONTH:d("growth",1,1),GROWTHPASTQUARTER:d("growth",1,1),GROWTHPASTWEEK:d("growth",1,1),GROWTHPASTYEAR:d("growth",1,1),GROWTHRATE:d("growth",1,1),LN:d("scalar",1,1),LOG10:d("scalar",1,1),MINUS:d("scalar",1,1),MOD:d("scalar",2,2),QUOTIENT:d("scalar",2,2),PASTDAY:d("date",1,2),PASTMONTH:d("date",1,2),PASTPERIOD:d("date",1,2),PASTQUARTER:d("date",1,2),PASTWEEK:d("date",1,2),PASTYEAR:d("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:d("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:d("scalar",1,1),POWER:d("scalar",2,2),ROUND:d("scalar",2,2),SIN:d("scalar",1,1),SQRT:d("scalar",1,1),TAN:d("scalar",1,1)},vr=Object.keys(Z).filter(e=>Z[e].category==="xdiff");function bt(){return vr}function Ft(e){const t=Z[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function Ir(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 Pr=/\[(\w[\w.-]*)\]/g,Et=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),Lr=new RegExp(`\\b(${Array.from(Et).join("|")})\\s*\\(`,"i");function At(e){return S(e)?!0:typeof e=="string"&&e.startsWith(C)?!1:$(e)&&"kind"in e?e.kind==="measure":!0}function Br(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];Et.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function kr(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function zr(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const V=e=>e.startsWith("[")?e:`[${e}]`,wt=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function Ct(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 Ur(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(V)),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 M(e,t){e.result.errors.push(t),e.result.isValid=!1}const _r=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function Vr(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!_r.has(n[1].toUpperCase()));r&&M(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function Wr(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 jr(e){return ye(e,",").filter(t=>t.trim().length>0).length}function Kr(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=zt(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:jr(o)}),n.push(...Tt(o)),i+1}function Tt(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=Wr(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=Kr(e,r,i,t);continue}r++}return t}function Jr(e){const t=Tt(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(Rr.has(s)){r.has(s)||(r.add(s),M(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=Z[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=Ir(o.minArgs,o.maxArgs);M(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function Yr(e){return[...new Set([...e.matchAll(new RegExp(Pr.source,"g"))].map(t=>t[1]))]}function Gr(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(V(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${wt(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;M(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function Qr(e){if(Lr.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[V(r)])!=null?s:e.context[r];return n!==void 0&&!At(n)});t.length!==0&&M(e,`${e.errorPrefix}args[1]: ${zr(Br(e.formula))}Bracket reference(s) ${kr(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function Hr(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(V)),r=e.contextKeys.filter(i=>!t.has(V(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${wt(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?M(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function ze(e,t,r,n){var o;const s=(o=n.context[V(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(C))){At(s)&&M(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${C}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Ce(s,n.schemaIndex);c.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&M(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):M(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";M(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function Xr(e){const t=bt(),r=Ct(e.formula,t);for(const n of r){const s=Ft(n.functionName);ze(n.ref1,n,s,e),ze(n.ref2,n,s,e)}}function Zr(e,t,r={}){var s;const n=Ur(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||M(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(Vr(n),Jr(n),n.result.references=Yr(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?(M(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(Gr(n),Qr(n),Hr(n),Xr(n),n.result))}function en(e,t,r={}){const n=Zr(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 tn(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(!$(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;en(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=rn(n),a={};for(const[u,l]of Object.entries(i)){const g=`args[2].${u}`;if(S(l))a[`${u}`]=O({data:l,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:g}});else if(typeof l=="string"&&l.startsWith(C)){const f=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,m=o[f];try{a[`${u}`]=Y(l,t.dataSource,t.schemaIndex,m!==void 0?{inferredDateLevel:m}:void 0)}catch(F){const y=F instanceof Error?F.message:"Unknown error";throw new Error(`${g}: ${y}`)}}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 (${C}...), but got: ${typeof l}`)}e[2]=a}function rn(e){const t=bt(),r=Ct(e,t),n={};for(const s of r){const i=Ft(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 qt(e){return e.type===c.MetadataTypes.TextAttribute}function St(e){return e.type===c.MetadataTypes.NumericAttribute}function nn(e){return e.type===c.MetadataTypes.DateLevel}function sn(e){return qt(e)||St(e)}function ne(e){return e.type===c.MetadataTypes.TextAttribute?"text":e.type===c.MetadataTypes.NumericAttribute?"numeric":e.type===c.MetadataTypes.DateLevel?"date/datetime":"unknown"}function qe(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 Ue(e,t){const r=qe(e,t);if(!sn(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${ne(r)} attribute`)}function L(e,t){const r=qe(e,t);if(!St(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ne(r)} attribute`)}function B(e,t){const r=qe(e,t);if(!qt(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${ne(r)} attribute`)}function on(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 an(e,t){const r=on(e,t);if(!c.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`)}const un={"measureFactory.customFormula":tn,"filterFactory.equals":Ue,"filterFactory.doesntEqual":Ue,"filterFactory.greaterThan":L,"filterFactory.greaterThanOrEqual":L,"filterFactory.lessThan":L,"filterFactory.lessThanOrEqual":L,"filterFactory.between":L,"filterFactory.betweenNotEqual":L,"filterFactory.numeric":L,"filterFactory.contains":B,"filterFactory.doesntContain":B,"filterFactory.startsWith":B,"filterFactory.doesntStartWith":B,"filterFactory.endsWith":B,"filterFactory.doesntEndWith":B,"filterFactory.like":B,"filterFactory.exclude":an};function ln(e){return un[`${e}`]}const xt={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!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},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1}],"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.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 xt[`${e}`]}function cn(e){const t=Se(e);return t?t.filter(r=>r.required).length:0}function fn(e){const t=Se(e);return t?t.length:0}function dn(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 ue(e,t,r,n){if(e.startsWith(C))try{return Y(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${C}TableName.ColumnName[.Level]'`)}function mn(e,t,r,n){if(e.startsWith(C))try{return qr(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: '${C}TableName.ColumnName'`)}function pn(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 ue(t,n,s,o);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 ue(a,n,s,`${o}[${u}]`)});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 O({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 O({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 O({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 O({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 O({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(S(t))return O({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 mn(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=ue(t,n,s,o);if(!nn(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${ne(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(S(t))return O({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(dn(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 O(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(xt),p=R(i,y,T=>T),E=p&&p.distance<=x?` Did you mean '${p.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${E}`)}const l=cn(i),g=fn(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 f=[],m=[];for(let y=0;y<Math.max(o.length,u.length);y++){const p=u[`${y}`],E=o[`${y}`],T=a?`${a}args[${y}]`:`args[${y}]`;if(E===void 0){p!=null&&p.required&&m.push(`${T}: Missing required argument (expected ${p.type})`);continue}if(!p){m.push(`${T}: Unexpected argument`);continue}try{const N=pn({data:E,context:{dataSource:r,schemaIndex:n,pathPrefix:T,argSchema:p}});f.push(N)}catch(N){const se=N instanceof Error?N.message:"Unknown error";m.push(se)}}if(m.length>0){const y=m.join("; ");throw new Error(y)}const F=ln(i);if(F)try{F(f,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(y){const p=y instanceof Error?y.message:"Unknown validation error";throw new Error(p)}return Nr(i,f)}function $t(e){const{attribute:t,config:r}=e;if(c.isMembersFilter(e)&&c.isLevelAttribute(t)){const{granularity:n}=t,s=e.members.map(a=>n==="Years"&&!isNaN(Number(a))?`${a}-01-01T00:00:00`:a),i=c.simplifyFilterConfig(r),o=Object.keys(i).length===0?void 0:i;return c.members(t,s,o)}return e}function gn(e){let t=[];for(const r of e)H(r)?t=c.mergeFiltersOrFilterRelations(r,t):t=c.mergeFiltersOrFilterRelations([$t(r)],t);return t!=null?t:[]}const yn=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={category:"filters",index:a,input:o};try{const l=O({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!H(l)&&!re(l)?i.push(A(h({},u),{message:"Invalid filter JSON"})):s.push(l)}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(A(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:gn(s)}},xe=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?gt(t)?yn({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{category:"filters",index:-1,input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},hn=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={category:"highlights",index:a,input:o};try{const l=O({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});re(l)?s.push($t(l)):i.push(A(h({},u),{message:"Invalid filter JSON"}))}catch(l){const g=l instanceof Error?l.message:"Unknown error";i.push(A(h({},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?gt(t)?hn({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{category:"highlights",index:-1,input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},bn=(e,t)=>{if(e&&!c.isSortDirection(e))return A(h({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Fn=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=O({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return Ae(i)?{success:!0,data:i}:{success:!1,errors:[A(h({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[A(h({},r),{message:o})]}}},En=(e,t,r,n)=>{const s=O({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Ae(s))return{style:{},error:A(h({},n),{message:"Invalid measure JSON"})};const i=bn(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}},An=(e,t,r,n)=>{if(Cr(e))return En(e,t,r,n);if(S(e)){const s=Fn(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:A(h({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},Dt=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:[{category:"measures",index:-1,input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={category:"measures",index:a,input:o};try{const l=An(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(A(h({},u),{message:g}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function G(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(G):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,G(r)])):e}function w(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}const wn=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=we(n),i=[],o=w(()=>ht({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=w(()=>Dt({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=w(()=>xe({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let l=null;return t.highlights&&(l=w(()=>$e({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0?{success:!1,errors:i}:{success:!0,data:h({dataSource:c.convertDataSource(r),dimensions:o?c.adaptDimensionsForQuery(o):[],measures:a?c.adaptMeasuresForQuery(a):[],filters:u||[]},l&&{highlights:l})}};function _e(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function De(e){const t=[],r=[];return e.forEach((n,s)=>{var f,m,F;const i=_e(n)?n.column:n,o=_e(n)?n:void 0,a=()=>typeof i.toJSON=="function"?i.toJSON():i;if(!i.composeCode){r.push({category:"dimensions",index:s,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(C)){r.push({category:"dimensions",index:s,input:a(),message:`Expected composeCode to start with '${C}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(F=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?F:((f=i.getSort)==null?void 0:f.call(i))!==void 0&&((m=i.getSort)==null?void 0:m.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 y=h(h({column:i.composeCode},u!==void 0&&u!==c.Sort.None&&{sortType:c.convertSortToSortDirection(u)}),l);t.push(y)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const pe="Unknown error";function Oe(e){if(!e)return{success:!0,data:[]};const t=[];if(c.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{category:"filters",index:-1,input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[U(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:pe;return{success:!1,errors:[{category:"filters",index:-1,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({category:"filters",index:s,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=U(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:pe;t.push({category:"filters",index: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 Me(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({category:"highlights",index:s,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=U(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:pe;r.push({category:"highlights",index: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 Ve(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function Ne(e){const t=[],r=[];return e.forEach((n,s)=>{var u,l,g;const i=Ve(n)?n.column:n,o=Ve(n)?n:void 0,a=()=>typeof i.toJSON=="function"?i.toJSON():i;if(!i.composeCode){r.push({category:"measures",index:s,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const f=U(i.composeCode),m=(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(m!==void 0&&m!==c.Sort.None||o&&Object.keys(c.omit(o,"column")).length>0){const y=o?c.omit(o,"column"):{},p=h(h({column:f},m!==void 0&&m!==c.Sort.None&&{sortType:c.convertSortToSortDirection(m)}),y);t.push(p)}else t.push(f)}catch(f){const m=f instanceof Error?f.message:"Unknown error";r.push({category:"measures",index:s,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${m}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function We(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(c.TREND_PREFIX))!=null?s:!1)}function je(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(c.FORECAST_PREFIX))!=null?s:!1)}function Ke(e){try{const t=U(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Cn(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(We(a)||je(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",l=`${c.TREND_PREFIX}_${u}`,g=`${c.FORECAST_PREFIX}_${u}`;let f,m,F=o+1;if(F<e.length&&!t.has(F)&&We(e[F])&&e[F].name===l){const y=(s=e[F].composeCode)==null?void 0:s.trim();y&&(f=Ke(y),t.add(F),F++)}if(F<e.length&&!t.has(F)&&je(e[F])&&e[F].name===g){const y=(i=e[F].composeCode)==null?void 0:i.trim();y&&(m=Ke(y),t.add(F))}f!==void 0||m!==void 0?r.push(h(h({column:a},f&&Object.keys(f).length>0&&{trend:f}),m&&Object.keys(m).length>0&&{forecast:m})):r.push(a)}return r}function Tn(e){const t=[],r=w(()=>De(e.dimensions||[]),t),n=Cn(e.measures||[]),s=w(()=>Ne(n),t),i=w(()=>Oe(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=w(()=>Me(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=h({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:G(a)}}const Ot=new Set(c.ALL_CHART_TYPES.filter(e=>e!=="image")),Je=Object.freeze([...Ot]),le=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),qn={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"]}},Sn=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),xn=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function $n(e){const t=qn[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function Mt(e){return typeof e=="string"&&Ot.has(e)}function Dn(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Sn.has(e))return!0;if(xn.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return $(n)&&"column"in n&&(s=n.column),!(S(n)||s!==void 0&&S(s))}function On(e){const t=[],r={chartType:"",dataOptions:{}};if(!$(e))return t.push({category:"chartType",index:-1,input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=R("chartType",i,l=>l),a=o&&o.distance<=x?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=x?{[o.best]:e[o.best]}:e;t.push({category:"chartType",index:-1,input:u,message:`chartType is required.${a}`})}else if(Mt(n))r.chartType=n;else{const i=R(String(n),Je,u=>u),o=i&&i.distance<=x?` Did you mean '${i.best}'?`:"",a=Je.slice(0,8).join(", ");t.push({category:"chartType",index:-1,input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=R("dataOptions",i,l=>l),a=o&&o.distance<=x?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=x?{[o.best]:e[o.best]}:e;t.push({category:"dataOptions",index:-1,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 Mn(e){return e.map(({attribute:t,style:r})=>r?h({column:t},r):t)}function Nn(e){return e.map(({measure:t,style:r})=>r?h({column:t},r):t)}function Nt(e){return Array.isArray(e)?e:[e]}function ge(e){return t=>A(h({},t),{category:"dataOptions",index:e})}function ee(e,t,r,n,s){const i=t?Nt(t):[];if(i.length===0)return[];if(r==="dimension"){const a=w(()=>ht({data:i,context:n}),s,ge(e));return a!==null?Mn(a):null}const o=w(()=>Dt({data:i,context:n}),s,ge(e));return o!==null?Nn(o):null}function Ye(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=De(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>A(h({},o),{category:"dataOptions",index:e}))}}const s=Ne(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>A(h({},i),{category:"dataOptions",index:e}))}}function Rn(e,t){let r;$(e)&&"column"in e&&(r=e.column);const s=!(S(e)||r!==void 0&&S(r))?"dimension":"measure",i=[],o=ee("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function vn(e,t,r,n){const s=[];for(const i of e){const o=w(()=>Rn(i,t),r,n);o&&s.push(...o)}return s}function In(e,t,r){if(!e||!$(e))return r.push({category:"dataOptions",index:-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 f of a)if(!le.has(f)){const m=R(f,[...le],y=>y),F=m&&m.distance<=x?` Did you mean '${m.best}'?`:"";m&&m.distance<=x&&u.set(f,m.best),r.push({category:"dataOptions",index:f,input:o[f],message:`Unknown dataOptions key '${f}'.${F}`})}const l=s?$n(s):void 0;if(l){for(const f of a)if(f!=="seriesToColorMap"&&!l.validAxes.has(f)&&le.has(f)){const m=R(f,[...l.validAxes],p=>p),F=m&&m.distance<=x?` Did you mean '${m.best}'?`:"",y=[...l.validAxes].join(", ");r.push({category:"dataOptions",index:f,input:o[f],message:`Axis '${f}' is not valid for chart type '${s}'. Valid axes: ${y}.${F}`})}for(const f of l.requiredAxes)[...u.values()].includes(f)||(!(f in o)||o[f]==null)&&r.push({category:"dataOptions",index:f,input:null,message:`Chart type '${s}' requires '${l.requiredAxes.join("' and '")}'. Missing: ${f}.`});s==="indicator"&&(["value","secondary","min","max"].some(F=>F in o&&o[F]!=null)||r.push({category:"dataOptions",index:-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({category:"dataOptions",index:-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[f,m]of g){if(!m)continue;if(f==="seriesToColorMap"){n[f]=m;continue}if(f==="columns"){n[f]=vn(Nt(m),t,r,ge("columns"));continue}const F=Dn(f,m,s)?"dimension":"measure",y=ee(f,m,F,t,r);if(y!==null){const p=s==="calendar-heatmap"&&f==="value";n[f]=p||!Array.isArray(m)?y[0]:y}}return r.length>i?null:n}function Pn(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const Ln=e=>{var p;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=On(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=we(s),l=[];let g=In(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},l);if(a==="boxplot"&&g){const E=Pn((p=i.styleOptions)==null?void 0:p.subtype),T=E==="iqr"||E==="standardDeviation";g=A(h({},g),{boxType:E,outliersEnabled:T})}let f=null;i.filters&&i.filters.length>0&&(f=w(()=>xe({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),l));let m=null;if(i.highlights&&i.highlights.length>0&&(m=w(()=>$e({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),l)),l.length>0||g===null)return{success:!1,errors:l};if(!Mt(i.chartType))return{success:!1,errors:[{category:"chartType",index:-1,input:i.chartType,message:"Invalid chartType"}]};const F=i.chartType;return{success:!0,data:h(h(h({dataSet:c.convertDataSource(n),chartType:F,dataOptions:g},i.styleOptions&&{styleOptions:i.styleOptions}),f&&{filters:f}),m&&{highlights:m})}},Bn=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{category:"dimensions",index:-1,input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{category:"dimensions",index:-1,input:e,message:"dataOptions is required"}]};let r=null;const n=kn(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const u=w(()=>Oe(e.filters),t);s=u!=null?u:void 0}let i;if(e.highlights&&e.highlights.length>0){const u=w(()=>Me(e.highlights),t);i=u!=null?u:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=h(h(h({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:G(o)}};function kn(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 f=o[g],F=zn(f)?De([f]):Ne([f]);F.success?u.push(...F.data):F.errors.forEach(y=>{var p;l.push(A(h({},y),{index:g,input:(p=y.input)!=null?p:f}))})}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 zn(e){const t=Array.isArray(e)?e[0]:e;if(!t||!$(t))return!0;const r="column"in t&&t.column!=null&&$(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 Ge=["rows","columns","values","grandTotals"];function Un(e){if(!$(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function _n(e){const t=[],r={dataOptions:{}};if(!$(e))return t.push({category:"dataOptions",index:-1,input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=R("dataOptions",s,u=>u),o=i&&i.distance<=x?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=x?{[i.best]:e[i.best]}:e;t.push({category:"dataOptions",index:-1,input:a,message:`dataOptions is required.${o}`})}else if($(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!Ge.includes(o)){const a=R(o,[...Ge],l=>l),u=a&&a.distance<=x?` Did you mean '${a.best}'?`:"";t.push({category:"dataOptions",index: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({category:"dataOptions",index:o,input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!Un(i)&&t.push({category:"dataOptions",index:"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 Vn(e,t,r){if(!e||typeof e!="object")return r.push({category:"dataOptions",index:-1,input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=ee(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=ee("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 Wn=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=_n(t);if(o.length>0)return{success:!1,errors:o};const a=we(s),u=[],l=Vn(i.dataOptions,{dataSource:n,schemaIndex:a},u);let g=null;i.filters&&i.filters.length>0&&(g=w(()=>xe({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let f=null;return i.highlights&&i.highlights.length>0&&(f=w(()=>$e({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||l===null?{success:!1,errors:u}:{success:!0,data:h(h(h({dataSet:c.convertDataSource(n),dataOptions:l},i.styleOptions&&{styleOptions:i.styleOptions}),g&&{filters:g}),f&&{highlights:f})}},jn=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{category:"dataOptions",index:-1,input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const l of["rows","columns"]){const g=r[l];if(g&&g.length>0){const f=Ye(l,g,"dimension");f.success?n[l]=f.data:t.push(...f.errors)}}const s=r.values;if(s&&s.length>0){const l=Ye("values",s,"measure");l.success?n.values=l.data:t.push(...l.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const l=w(()=>Oe(e.filters),t);i=l!=null?l:void 0}let o;if(e.highlights&&e.highlights.length>0){const l=w(()=>Me(e.highlights),t);o=l!=null?l:void 0}if(t.length>0)return{success:!1,errors:t};const a=h(h(h({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:G(a)}};function Kn(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 Jn(e,t,r=!1){const n=Kn(e),s=c.prepareQueryParams(n,t);return c.getJaqlQueryPayload(s,r)}exports.EMPTY_EXPANDED_QUERY_MODEL=P.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=P.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=P.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=P.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=P.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=P.isClientSideWidgetCodeParams;exports.CustomSuperJSON=Ar;exports.translateChartFromJSON=Ln;exports.translateChartToJSON=Bn;exports.translatePivotTableFromJSON=Wn;exports.translatePivotTableToJSON=jn;exports.translateQueryFromJSON=wn;exports.translateQueryToJSON=Tn;exports.translateQueryToJaql=Jn;