react-semaphor 0.1.469 → 0.1.471

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 (93) hide show
  1. package/README.md +10 -0
  2. package/dist/analytics-protocol/index.cjs +1 -1
  3. package/dist/analytics-protocol/index.js +107 -106
  4. package/dist/brand-studio/index.cjs +1 -1
  5. package/dist/brand-studio/index.js +4 -4
  6. package/dist/briefings/index.cjs +1 -1
  7. package/dist/briefings/index.js +4 -4
  8. package/dist/chunks/{analyze-result-contract-kaCNxjA7.js → analyze-result-contract-B3agc2XU.js} +1 -1
  9. package/dist/chunks/{analyze-result-contract-CMwVg9w2.cjs → analyze-result-contract-OgPk-zGu.cjs} +1 -1
  10. package/dist/chunks/{common-types-tRK8fhXV.cjs → common-types-C1IM7gao.cjs} +1 -1
  11. package/dist/chunks/{common-types-BgI-ymBp.js → common-types-g_1fKJLK.js} +1 -1
  12. package/dist/chunks/{dashboard-briefing-launcher-kKSBCRLE.js → dashboard-briefing-launcher-C2-b7rZU.js} +10 -10
  13. package/dist/chunks/dashboard-briefing-launcher-ChHmLu0F.cjs +26 -0
  14. package/dist/chunks/{dashboard-controls-DP2rftVR.js → dashboard-controls-Db7VOHdj.js} +9 -9
  15. package/dist/chunks/{dashboard-controls-Z8ow3GV6.cjs → dashboard-controls-kw4QQDSz.cjs} +1 -1
  16. package/dist/chunks/dashboard-filter-value-compatibility-Dmh-NaPK.cjs +1 -0
  17. package/dist/chunks/dashboard-filter-value-compatibility-ilbH2A31.js +836 -0
  18. package/dist/chunks/{dashboard-input-contract-12mPNhCF.cjs → dashboard-input-contract-JFJZgenC.cjs} +1 -1
  19. package/dist/chunks/{dashboard-input-contract-Ciboc347.js → dashboard-input-contract-Vr_3ApfF.js} +1 -1
  20. package/dist/chunks/{dashboard-json-CPq7IMvR.cjs → dashboard-json-Cu37kF4Q.cjs} +1 -1
  21. package/dist/chunks/{dashboard-json-3qT123Xa.js → dashboard-json-Dp-38lll.js} +7 -7
  22. package/dist/chunks/{edit-dashboard-visual-7eUCTZnx.cjs → edit-dashboard-visual-Cbtpwhlp.cjs} +33 -33
  23. package/dist/chunks/{edit-dashboard-visual-Clz6LQOX.js → edit-dashboard-visual-CffII05Z.js} +3611 -3713
  24. package/dist/chunks/{editor-action-buttons-WJFWflfs.cjs → editor-action-buttons-DcTGZa2C.cjs} +1 -1
  25. package/dist/chunks/{editor-action-buttons-CFbMRQSE.js → editor-action-buttons-DqwDHxFv.js} +6 -6
  26. package/dist/chunks/{index-CQN-X1jN.cjs → index-B4VxBoJg.cjs} +1 -1
  27. package/dist/chunks/{index-8Cm77joZ.js → index-CUf0lwSP.js} +24824 -24881
  28. package/dist/chunks/{index-DKaQRhKm.cjs → index-DUYREWSl.cjs} +227 -227
  29. package/dist/chunks/{index-DO4BESNy.js → index-oVXvCLH-.js} +9 -9
  30. package/dist/chunks/{matrix-result-contract-ClC6Pd_g.js → matrix-result-contract-DoU9diAh.js} +3 -3
  31. package/dist/chunks/{matrix-result-contract-DF-qt0jx.cjs → matrix-result-contract-SrzyG_KQ.cjs} +1 -1
  32. package/dist/chunks/{pivot-header-presentation-OpY8xzdT.js → pivot-header-presentation-7XrwJYDm.js} +102 -95
  33. package/dist/chunks/pivot-header-presentation-Cr6pU5JL.cjs +4 -0
  34. package/dist/chunks/{pivot-result-identity-CCMpd8ZA.js → pivot-result-identity-5v4hRVbc.js} +1 -1
  35. package/dist/chunks/{pivot-result-identity-gsOwOjHi.cjs → pivot-result-identity-DRUlTWUq.cjs} +1 -1
  36. package/dist/chunks/{pivot-result-lifecycle-CEfU43GZ.cjs → pivot-result-lifecycle-DJgO2P0H.cjs} +1 -1
  37. package/dist/chunks/{pivot-result-lifecycle-B38AZx4a.js → pivot-result-lifecycle-O_roVguV.js} +7 -7
  38. package/dist/chunks/{raw-temporal-contract-r_EMdR85.js → raw-temporal-contract-BEMf3avg.js} +1 -1
  39. package/dist/chunks/{raw-temporal-contract-UdblxoVB.cjs → raw-temporal-contract-D8YuxTAg.cjs} +1 -1
  40. package/dist/chunks/{report-preferences-dialog-C5UOCTwt.cjs → report-preferences-dialog-BEe2cTT-.cjs} +1 -1
  41. package/dist/chunks/{report-preferences-dialog-D-NDYRrk.js → report-preferences-dialog-C_FTOmOg.js} +6 -6
  42. package/dist/chunks/{report-runtime-context-CcXUjpb-.js → report-runtime-context-DnNbpkGo.js} +1 -1
  43. package/dist/chunks/{report-runtime-context-CLtzrZdC.cjs → report-runtime-context-RFiWq4wK.cjs} +1 -1
  44. package/dist/chunks/{saved-temporal-bucket-format-hylaofsQ.js → saved-temporal-bucket-format-CygnBDO2.js} +24 -24
  45. package/dist/chunks/{saved-temporal-bucket-format-Ca4hUfTo.cjs → saved-temporal-bucket-format-DNMtD77o.cjs} +1 -1
  46. package/dist/chunks/{switch-DyE2_OmQ.cjs → switch-CQN9Hzho.cjs} +19 -19
  47. package/dist/chunks/{switch-BagpmPNw.js → switch-n2yUNY8i.js} +177 -164
  48. package/dist/chunks/{temporal-bucket-BDRcWdVv.cjs → temporal-bucket-9Wz9Ds6H.cjs} +1 -1
  49. package/dist/chunks/{temporal-bucket-Cc9fmx8s.js → temporal-bucket-CUKJktCl.js} +1 -1
  50. package/dist/chunks/{temporal-bucket-authoring-DjPFtRSF.js → temporal-bucket-authoring-CZoJV2L6.js} +3 -3
  51. package/dist/chunks/{temporal-bucket-authoring-C6sZAVqS.cjs → temporal-bucket-authoring-DSpzgXHc.cjs} +1 -1
  52. package/dist/chunks/{temporal-bucket-contract-vrOkax-r.cjs → temporal-bucket-contract-BD862TAa.cjs} +1 -1
  53. package/dist/chunks/{temporal-bucket-contract-DT4kU0VY.js → temporal-bucket-contract-Cno9TlYr.js} +1 -1
  54. package/dist/chunks/{token-types-DALtlgbG.cjs → token-types-CoHsSJ4E.cjs} +1 -1
  55. package/dist/chunks/{token-types-Z889rD6g.js → token-types-W3EHNW-D.js} +1 -1
  56. package/dist/chunks/{update-policy-Cyufdviq.cjs → update-policy-BGNXFgBU.cjs} +1 -1
  57. package/dist/chunks/{update-policy-Bu5Tw43R.js → update-policy-kRNJwwUV.js} +1 -1
  58. package/dist/chunks/{validators-DhTaCK1O.js → validators-B5t1s8oh.js} +274 -266
  59. package/dist/chunks/validators-DcshgK7w.cjs +1 -0
  60. package/dist/dashboard/index.cjs +1 -1
  61. package/dist/dashboard/index.js +2 -2
  62. package/dist/dashboard-authoring/index.cjs +1 -1
  63. package/dist/dashboard-authoring/index.js +4 -4
  64. package/dist/data-app-builder/index.cjs +1 -1
  65. package/dist/data-app-builder/index.js +2 -2
  66. package/dist/data-app-codegen/index.cjs +1 -1
  67. package/dist/data-app-codegen/index.js +2 -2
  68. package/dist/data-app-codegen-node/index.cjs +1 -1
  69. package/dist/data-app-codegen-node/index.js +3 -3
  70. package/dist/data-app-sdk/index.cjs +1 -1
  71. package/dist/data-app-sdk/index.js +3 -3
  72. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  73. package/dist/data-app-sdk-adapters/index.js +2 -2
  74. package/dist/data-app-sdk-validation/index.cjs +1 -1
  75. package/dist/data-app-sdk-validation/index.js +3 -3
  76. package/dist/format-utils/index.cjs +3 -3
  77. package/dist/format-utils/index.js +72 -69
  78. package/dist/index.cjs +1 -1
  79. package/dist/index.js +14 -14
  80. package/dist/report-runtime-context/index.cjs +1 -1
  81. package/dist/report-runtime-context/index.js +2 -2
  82. package/dist/surfboard/index.cjs +1 -1
  83. package/dist/surfboard/index.js +3 -3
  84. package/dist/types/analytics-protocol.d.ts +13 -0
  85. package/dist/types/format-utils.d.ts +9 -0
  86. package/dist/types/index.cjs +1 -1
  87. package/dist/types/index.js +4 -4
  88. package/package.json +1 -1
  89. package/dist/chunks/dashboard-briefing-launcher-BqxcYhO2.cjs +0 -26
  90. package/dist/chunks/dashboard-filter-value-compatibility-Ce7jUVh-.js +0 -692
  91. package/dist/chunks/dashboard-filter-value-compatibility-iCPBcrRS.cjs +0 -1
  92. package/dist/chunks/pivot-header-presentation-DyV0iOZ_.cjs +0 -4
  93. package/dist/chunks/validators-DO-YuzgO.cjs +0 -1
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../data-app-sdk-adapters/index.cjs"),i=require("react/jsx-runtime"),c=require("react"),ae=require("../chunks/validators-DO-YuzgO.cjs");require("../chunks/analyze-result-contract-CMwVg9w2.cjs");require("../value-format-preferences/index.cjs");const se=require("../chunks/search-BqqhaMx9.cjs"),Ke=require("../chunks/x-B6ghREd2.cjs");function ue(e,r,t={}){return{...t,name:e,role:r}}function Mr(e){return e}function Kr(e){return e}const Wr={source:{semantic(e){return{...e,kind:"semantic"}},sql(e){return{...e,kind:"sql"}}},field:{measure(e,r){return ue(e,"measure",r)},dimension(e,r){return ue(e,"dimension",r)},date(e,r){return ue(e,"date",r)},id(e,r){return ue(e,"id",r)}},filter(e){return{...e,kind:"filter"}},bindInput(e,r){return{toAnalyticsInput(){const[t]=w.toSemaphorInputSnapshots([e]),n=w.toSemaphorInputBinding({...r,inputId:r.inputId||t.inputId});return{...t,inputId:n.inputId,...n.kind?{kind:n.kind}:{},...n.controlRole?{controlRole:n.controlRole}:{},...n.operator?{operator:n.operator}:{},...n.field?{field:n.field}:{},...n.relationshipHint?{relationshipHint:n.relationshipHint}:{}}}}},control(e){return{...e,kind:"control"}},sqlParam(e){return{...e,kind:"control",role:"sqlParam"}},derivedField(e){return{...e,kind:"derived_field",expressionLanguage:e.expressionLanguage||"semaphor_sql_template"}},metric(e){return{...e,queryKind:"metric"}},analysis(e){return{...e,queryKind:"analysis"}},records(e){return{...e,queryKind:"records"}},inputOptions(e){return{...e,queryKind:"inputOptions"}},sql(e){return{...e,queryKind:"sql"}},matrix(e){return{...e,queryKind:"matrix"}}},ie=10,Le=8;function We(e,r){const t=e==null?void 0:e.result;if(t)switch(t.kind){case"records":return te({title:"Records",rowNoun:"rows",records:t.records,columns:t.columns,rowCount:t.rowCount});case"sql":return te({title:"SQL Rows",rowNoun:"rows",records:t.records,columns:t.columns,rowCount:t.rowCount});case"inputOptions":return te({title:"Options",rowNoun:"options",records:t.options.slice(0,ie).map(n=>{var s;return{label:n.label,value:n.value,count:n.count,disambiguation:(s=n.disambiguation)==null?void 0:s.join(" / ")}}),columns:[{key:"label",label:"Label"},{key:"value",label:"Value"},{key:"count",label:"Count"},{key:"disambiguation",label:"Disambiguation"}],rowCount:t.rowCount??t.options.length});case"metric":return _r(t,r);case"matrix":return te({title:"Matrix Cells",rowNoun:"cells",records:t.cells.slice(0,ie).map(n=>{const s=t.nodesById[n.rowId],o=n.columnId?t.nodesById[n.columnId]:void 0,u=t.measuresById[n.measureId];return{row:(s==null?void 0:s.label)||n.rowId,column:(o==null?void 0:o.label)||n.columnId||"Total",measure:(u==null?void 0:u.label)||n.measureId,value:n.value,role:n.role}}),columns:[{key:"row",label:"Row"},{key:"column",label:"Column"},{key:"measure",label:"Measure"},{key:"value",label:"Value"},{key:"role",label:"Role"}],rowCount:t.rowCount??t.cells.length});default:return Fr(t)}}function _r(e,r){var o,u,p,d,f;const t=[{metric:"primaryValue",value:(r==null?void 0:r.primaryValue)??e.primaryValue}],n=(r==null?void 0:r.comparisonKind)??((o=e.comparison)==null?void 0:o.kind);return n&&t.push({metric:`${n} value`,value:(r==null?void 0:r.comparisonValue)??((u=e.comparison)==null?void 0:u.value)},{metric:"delta",value:(r==null?void 0:r.delta)??((p=e.comparison)==null?void 0:p.delta)},{metric:"deltaPercent",value:(r==null?void 0:r.deltaPercent)??((d=e.comparison)==null?void 0:d.deltaPercent)}),(((f=r==null?void 0:r.missingMeasures)==null?void 0:f.filter(Boolean))??[]).forEach(g=>{t.push({metric:`missing:${g}`,value:"missing"})}),Object.entries((r==null?void 0:r.measures)??{}).sort(([g],[m])=>g.localeCompare(m)).forEach(([g,m])=>{t.push({metric:`measure:${g}`,value:m})}),Object.entries((r==null?void 0:r.measureBindings)??{}).sort(([g],[m])=>g.localeCompare(m)).forEach(([g,m])=>{t.push({metric:`binding:${g}`,value:m})}),te({title:"Metric",rowNoun:"values",records:t,columns:[{key:"metric",label:"Metric"},{key:"value",label:"Value"}],rowCount:t.length})}function te({title:e,rowNoun:r,records:t,columns:n,rowCount:s}){const o=Nr(n,t);if(!o.length)return;const u=s??t.length,p=t.slice(0,ie);return{title:e,summary:`${Pr(u)} ${r}`,columns:o.slice(0,Le),rows:p,truncatedRows:u>p.length,truncatedColumns:o.length>Le}}function Nr(e,r){if(e!=null&&e.length)return e.filter(n=>n.key).map(n=>({key:n.key,label:n.label||n.key}));const t=new Set;return r.slice(0,ie).forEach(n=>{Object.keys(n).forEach(s=>t.add(s))}),[...t].map(n=>({key:n,label:n}))}function Fr(e){throw new Error(`Unhandled Semaphor result kind: ${pr(e)}`)}function zr(e){return e===null?"null":e===void 0?"":typeof e=="string"?rr(e):typeof e=="number"||typeof e=="boolean"?String(e):rr(pr(e))}function Pr(e){return typeof e=="number"?e.toLocaleString():"-"}function pr(e){return JSON.stringify(e,null,2)??"undefined"}function rr(e){return e.length>80?`${e.slice(0,77)}...`:e}function he(e){return e.viewTitle||e.queryLabel||e.viewId||e.queryId}function Hr(e){if(e.label)return e.label;if(e.queryKind!=="inputOptions")return;const t=e.labelField.label||e.valueField.label||e.labelField.name||e.valueField.name||e.inputId;return`${Vr(t)} Options`}function Vr(e){return(e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\bfilter\b/gi," ").replace(/\boptions?\b/gi," ").replace(/\bid\b/gi," ").replace(/\s+/g," ").trim()||e).split(" ").filter(Boolean).map(n=>n===n.toUpperCase()&&n.length>1?n:`${n.slice(0,1).toUpperCase()}${n.slice(1)}`).join(" ")}function _e(e){return e.flatMap(r=>{var g,m,v,y;const t=r.latestAttempt,n=t==null?void 0:t.executionResult,s=Se((g=n==null?void 0:n.validation)==null?void 0:g.warnings),o=Se((m=n==null?void 0:n.validation)==null?void 0:m.errors),u=Jr((v=n==null?void 0:n.coverage)==null?void 0:v.missingObligations),p=Se((y=n==null?void 0:n.coverage)==null?void 0:y.warnings),d=[],f=he(r);(t==null?void 0:t.status)==="error"&&d.push({trace:r,tone:"error",title:f,message:t.errorMessage||"Query attempt failed."});for(const h of r.clientWarnings)d.push({trace:r,tone:"warning",title:f,message:h});for(const h of s)d.push({trace:r,tone:"warning",title:f,...h});for(const h of o)d.push({trace:r,tone:"error",title:f,...h});for(const h of u)d.push({trace:r,tone:"warning",title:f,message:h});for(const h of p)d.push({trace:r,tone:"warning",title:f,...h});return d})}function Qr(e){return{traceId:e.trace.traceId,queryId:e.trace.queryId,viewId:e.trace.viewId,viewTitle:e.trace.viewTitle,queryLabel:e.trace.queryLabel,severity:e.tone,title:e.title,message:e.message,code:e.code,path:e.path}}function Ur(e,r){return e.filter(t=>t.trace.traceId===r.traceId).length}function Gr(e){const r=_e(e),t=e.filter(u=>{var p;return((p=u.latestAttempt)==null?void 0:p.status)==="error"}).length,n=e.filter(u=>{var p;return((p=u.latestAttempt)==null?void 0:p.status)==="loading"}).length,s=r.filter(u=>u.tone==="error").length,o=r.filter(u=>u.tone==="warning").length;return{total:e.length,failed:t,loading:n,errorCount:s,warningCount:o,issueCount:r.length,severity:t||s?"error":o?"warning":n?"loading":"ok"}}function Jr(e){return Array.isArray(e)?e.filter(r=>typeof r=="string"):[]}function Se(e){return Array.isArray(e)?e.map(Yr).filter(r=>!!r):[]}function Yr(e){if(typeof e=="string")return{message:e};if(!e||typeof e!="object"||Array.isArray(e))return;const r=e,t=typeof r.message=="string"?r.message:"",n=typeof r.code=="string"?r.code:"",s=typeof r.path=="string"?r.path:"";return t&&n?{message:s?`${t} (${n}, ${s})`:`${t} (${n})`,code:n,...s?{path:s}:{}}:t?{message:t,...s?{path:s}:{}}:n?{message:n,code:n}:void 0}function Xr(e){if(!e.enabled)return e;const r=e.queries.map(gr);return{enabled:e.enabled,queries:r,issues:e.issues,getQuery:t=>r.find(n=>n.queryId===t),getQueries:t=>r.filter(n=>n.queryId===t)}}function tr(e){return e?gr(e):void 0}function gr(e){var r;return(r=e==null?void 0:e.latestAttempt)!=null&&r.executionResult?{...e,latestAttempt:{...e.latestAttempt,resultPreview:e.latestAttempt.resultPreview||We(e.latestAttempt.executionResult),executionResult:Zr(e.latestAttempt.executionResult)}}:e}function Zr(e){const{compiledQuery:r,intent:t,result:n,...s}=e,o=et(s.metadata);return{...s,...o?{metadata:o}:{}}}function et(e){if(!e||typeof e!="object"||Array.isArray(e))return e;const r=e.dataAppDebug;if(!r||typeof r!="object"||Array.isArray(r))return e;const{compiledSql:t,...n}=r;return{...e,dataAppDebug:n}}function rt(e){return e==="relative"?{position:"relative",top:"auto",right:"auto",bottom:"auto",left:"auto"}:{top:e.startsWith("top")?20:"auto",right:e.endsWith("right")?20:"auto",bottom:e.startsWith("bottom")?20:"auto",left:e.endsWith("left")?20:"auto"}}function tt(e){return e==="error"?{borderColor:"var(--sd-error-border)",background:"var(--sd-error-bg)",color:"var(--sd-error-fg)"}:e==="warning"?{borderColor:"var(--sd-warning-border)",background:"var(--sd-warning-bg)",color:"var(--sd-warning-fg)"}:e==="loading"?{borderColor:"var(--sd-loading-border)",background:"var(--sd-loading-bg)",color:"var(--sd-loading-fg)"}:{borderColor:"var(--sd-success-border)",background:"var(--sd-success-bg)",color:"var(--sd-success-fg)"}}function nt(e){return e==="right"?{top:16,right:16,bottom:16,left:"auto",width:"min(720px, calc(100vw - 32px))",height:"auto",borderRadius:6}:{top:"auto",right:16,bottom:16,left:16,width:"auto",height:"min(420px, 45vh)",borderRadius:6}}function st(e){return e==="right"?{gridTemplateColumns:"minmax(210px, 280px) minmax(0, 1fr)"}:{gridTemplateColumns:"minmax(260px, 340px) minmax(0, 1fr)"}}function it(e){return{borderRight:"1px solid var(--sd-border)",borderBottom:0}}function mr(e){return e==="error"?{background:"var(--sd-error-dot)"}:e==="success"?{background:"var(--sd-success-dot)"}:e==="loading"?{background:"var(--sd-loading-dot)"}:{background:"var(--sd-idle-dot)"}}function ot(e){return e==="error"?{borderColor:"var(--sd-error-border)",color:"var(--sd-error-fg)"}:e==="success"?{borderColor:"var(--sd-success-border)",color:"var(--sd-success-fg)"}:e==="loading"?{borderColor:"var(--sd-loading-border)",color:"var(--sd-loading-fg)"}:{borderColor:"var(--sd-border)",color:"var(--sd-fg-muted)"}}const nr="semaphor-devtools-stylesheet",T="semaphor-devtools",at=`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../data-app-sdk-adapters/index.cjs"),i=require("react/jsx-runtime"),c=require("react"),ae=require("../chunks/validators-DcshgK7w.cjs");require("../chunks/analyze-result-contract-OgPk-zGu.cjs");require("../value-format-preferences/index.cjs");const se=require("../chunks/search-BqqhaMx9.cjs"),Ke=require("../chunks/x-B6ghREd2.cjs");function ue(e,r,t={}){return{...t,name:e,role:r}}function Mr(e){return e}function Kr(e){return e}const Wr={source:{semantic(e){return{...e,kind:"semantic"}},sql(e){return{...e,kind:"sql"}}},field:{measure(e,r){return ue(e,"measure",r)},dimension(e,r){return ue(e,"dimension",r)},date(e,r){return ue(e,"date",r)},id(e,r){return ue(e,"id",r)}},filter(e){return{...e,kind:"filter"}},bindInput(e,r){return{toAnalyticsInput(){const[t]=w.toSemaphorInputSnapshots([e]),n=w.toSemaphorInputBinding({...r,inputId:r.inputId||t.inputId});return{...t,inputId:n.inputId,...n.kind?{kind:n.kind}:{},...n.controlRole?{controlRole:n.controlRole}:{},...n.operator?{operator:n.operator}:{},...n.field?{field:n.field}:{},...n.relationshipHint?{relationshipHint:n.relationshipHint}:{}}}}},control(e){return{...e,kind:"control"}},sqlParam(e){return{...e,kind:"control",role:"sqlParam"}},derivedField(e){return{...e,kind:"derived_field",expressionLanguage:e.expressionLanguage||"semaphor_sql_template"}},metric(e){return{...e,queryKind:"metric"}},analysis(e){return{...e,queryKind:"analysis"}},records(e){return{...e,queryKind:"records"}},inputOptions(e){return{...e,queryKind:"inputOptions"}},sql(e){return{...e,queryKind:"sql"}},matrix(e){return{...e,queryKind:"matrix"}}},ie=10,Le=8;function We(e,r){const t=e==null?void 0:e.result;if(t)switch(t.kind){case"records":return te({title:"Records",rowNoun:"rows",records:t.records,columns:t.columns,rowCount:t.rowCount});case"sql":return te({title:"SQL Rows",rowNoun:"rows",records:t.records,columns:t.columns,rowCount:t.rowCount});case"inputOptions":return te({title:"Options",rowNoun:"options",records:t.options.slice(0,ie).map(n=>{var s;return{label:n.label,value:n.value,count:n.count,disambiguation:(s=n.disambiguation)==null?void 0:s.join(" / ")}}),columns:[{key:"label",label:"Label"},{key:"value",label:"Value"},{key:"count",label:"Count"},{key:"disambiguation",label:"Disambiguation"}],rowCount:t.rowCount??t.options.length});case"metric":return _r(t,r);case"matrix":return te({title:"Matrix Cells",rowNoun:"cells",records:t.cells.slice(0,ie).map(n=>{const s=t.nodesById[n.rowId],o=n.columnId?t.nodesById[n.columnId]:void 0,u=t.measuresById[n.measureId];return{row:(s==null?void 0:s.label)||n.rowId,column:(o==null?void 0:o.label)||n.columnId||"Total",measure:(u==null?void 0:u.label)||n.measureId,value:n.value,role:n.role}}),columns:[{key:"row",label:"Row"},{key:"column",label:"Column"},{key:"measure",label:"Measure"},{key:"value",label:"Value"},{key:"role",label:"Role"}],rowCount:t.rowCount??t.cells.length});default:return Fr(t)}}function _r(e,r){var o,u,p,d,f;const t=[{metric:"primaryValue",value:(r==null?void 0:r.primaryValue)??e.primaryValue}],n=(r==null?void 0:r.comparisonKind)??((o=e.comparison)==null?void 0:o.kind);return n&&t.push({metric:`${n} value`,value:(r==null?void 0:r.comparisonValue)??((u=e.comparison)==null?void 0:u.value)},{metric:"delta",value:(r==null?void 0:r.delta)??((p=e.comparison)==null?void 0:p.delta)},{metric:"deltaPercent",value:(r==null?void 0:r.deltaPercent)??((d=e.comparison)==null?void 0:d.deltaPercent)}),(((f=r==null?void 0:r.missingMeasures)==null?void 0:f.filter(Boolean))??[]).forEach(g=>{t.push({metric:`missing:${g}`,value:"missing"})}),Object.entries((r==null?void 0:r.measures)??{}).sort(([g],[m])=>g.localeCompare(m)).forEach(([g,m])=>{t.push({metric:`measure:${g}`,value:m})}),Object.entries((r==null?void 0:r.measureBindings)??{}).sort(([g],[m])=>g.localeCompare(m)).forEach(([g,m])=>{t.push({metric:`binding:${g}`,value:m})}),te({title:"Metric",rowNoun:"values",records:t,columns:[{key:"metric",label:"Metric"},{key:"value",label:"Value"}],rowCount:t.length})}function te({title:e,rowNoun:r,records:t,columns:n,rowCount:s}){const o=Nr(n,t);if(!o.length)return;const u=s??t.length,p=t.slice(0,ie);return{title:e,summary:`${Pr(u)} ${r}`,columns:o.slice(0,Le),rows:p,truncatedRows:u>p.length,truncatedColumns:o.length>Le}}function Nr(e,r){if(e!=null&&e.length)return e.filter(n=>n.key).map(n=>({key:n.key,label:n.label||n.key}));const t=new Set;return r.slice(0,ie).forEach(n=>{Object.keys(n).forEach(s=>t.add(s))}),[...t].map(n=>({key:n,label:n}))}function Fr(e){throw new Error(`Unhandled Semaphor result kind: ${pr(e)}`)}function zr(e){return e===null?"null":e===void 0?"":typeof e=="string"?rr(e):typeof e=="number"||typeof e=="boolean"?String(e):rr(pr(e))}function Pr(e){return typeof e=="number"?e.toLocaleString():"-"}function pr(e){return JSON.stringify(e,null,2)??"undefined"}function rr(e){return e.length>80?`${e.slice(0,77)}...`:e}function he(e){return e.viewTitle||e.queryLabel||e.viewId||e.queryId}function Hr(e){if(e.label)return e.label;if(e.queryKind!=="inputOptions")return;const t=e.labelField.label||e.valueField.label||e.labelField.name||e.valueField.name||e.inputId;return`${Vr(t)} Options`}function Vr(e){return(e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\bfilter\b/gi," ").replace(/\boptions?\b/gi," ").replace(/\bid\b/gi," ").replace(/\s+/g," ").trim()||e).split(" ").filter(Boolean).map(n=>n===n.toUpperCase()&&n.length>1?n:`${n.slice(0,1).toUpperCase()}${n.slice(1)}`).join(" ")}function _e(e){return e.flatMap(r=>{var g,m,v,y;const t=r.latestAttempt,n=t==null?void 0:t.executionResult,s=Se((g=n==null?void 0:n.validation)==null?void 0:g.warnings),o=Se((m=n==null?void 0:n.validation)==null?void 0:m.errors),u=Jr((v=n==null?void 0:n.coverage)==null?void 0:v.missingObligations),p=Se((y=n==null?void 0:n.coverage)==null?void 0:y.warnings),d=[],f=he(r);(t==null?void 0:t.status)==="error"&&d.push({trace:r,tone:"error",title:f,message:t.errorMessage||"Query attempt failed."});for(const h of r.clientWarnings)d.push({trace:r,tone:"warning",title:f,message:h});for(const h of s)d.push({trace:r,tone:"warning",title:f,...h});for(const h of o)d.push({trace:r,tone:"error",title:f,...h});for(const h of u)d.push({trace:r,tone:"warning",title:f,message:h});for(const h of p)d.push({trace:r,tone:"warning",title:f,...h});return d})}function Qr(e){return{traceId:e.trace.traceId,queryId:e.trace.queryId,viewId:e.trace.viewId,viewTitle:e.trace.viewTitle,queryLabel:e.trace.queryLabel,severity:e.tone,title:e.title,message:e.message,code:e.code,path:e.path}}function Ur(e,r){return e.filter(t=>t.trace.traceId===r.traceId).length}function Gr(e){const r=_e(e),t=e.filter(u=>{var p;return((p=u.latestAttempt)==null?void 0:p.status)==="error"}).length,n=e.filter(u=>{var p;return((p=u.latestAttempt)==null?void 0:p.status)==="loading"}).length,s=r.filter(u=>u.tone==="error").length,o=r.filter(u=>u.tone==="warning").length;return{total:e.length,failed:t,loading:n,errorCount:s,warningCount:o,issueCount:r.length,severity:t||s?"error":o?"warning":n?"loading":"ok"}}function Jr(e){return Array.isArray(e)?e.filter(r=>typeof r=="string"):[]}function Se(e){return Array.isArray(e)?e.map(Yr).filter(r=>!!r):[]}function Yr(e){if(typeof e=="string")return{message:e};if(!e||typeof e!="object"||Array.isArray(e))return;const r=e,t=typeof r.message=="string"?r.message:"",n=typeof r.code=="string"?r.code:"",s=typeof r.path=="string"?r.path:"";return t&&n?{message:s?`${t} (${n}, ${s})`:`${t} (${n})`,code:n,...s?{path:s}:{}}:t?{message:t,...s?{path:s}:{}}:n?{message:n,code:n}:void 0}function Xr(e){if(!e.enabled)return e;const r=e.queries.map(gr);return{enabled:e.enabled,queries:r,issues:e.issues,getQuery:t=>r.find(n=>n.queryId===t),getQueries:t=>r.filter(n=>n.queryId===t)}}function tr(e){return e?gr(e):void 0}function gr(e){var r;return(r=e==null?void 0:e.latestAttempt)!=null&&r.executionResult?{...e,latestAttempt:{...e.latestAttempt,resultPreview:e.latestAttempt.resultPreview||We(e.latestAttempt.executionResult),executionResult:Zr(e.latestAttempt.executionResult)}}:e}function Zr(e){const{compiledQuery:r,intent:t,result:n,...s}=e,o=et(s.metadata);return{...s,...o?{metadata:o}:{}}}function et(e){if(!e||typeof e!="object"||Array.isArray(e))return e;const r=e.dataAppDebug;if(!r||typeof r!="object"||Array.isArray(r))return e;const{compiledSql:t,...n}=r;return{...e,dataAppDebug:n}}function rt(e){return e==="relative"?{position:"relative",top:"auto",right:"auto",bottom:"auto",left:"auto"}:{top:e.startsWith("top")?20:"auto",right:e.endsWith("right")?20:"auto",bottom:e.startsWith("bottom")?20:"auto",left:e.endsWith("left")?20:"auto"}}function tt(e){return e==="error"?{borderColor:"var(--sd-error-border)",background:"var(--sd-error-bg)",color:"var(--sd-error-fg)"}:e==="warning"?{borderColor:"var(--sd-warning-border)",background:"var(--sd-warning-bg)",color:"var(--sd-warning-fg)"}:e==="loading"?{borderColor:"var(--sd-loading-border)",background:"var(--sd-loading-bg)",color:"var(--sd-loading-fg)"}:{borderColor:"var(--sd-success-border)",background:"var(--sd-success-bg)",color:"var(--sd-success-fg)"}}function nt(e){return e==="right"?{top:16,right:16,bottom:16,left:"auto",width:"min(720px, calc(100vw - 32px))",height:"auto",borderRadius:6}:{top:"auto",right:16,bottom:16,left:16,width:"auto",height:"min(420px, 45vh)",borderRadius:6}}function st(e){return e==="right"?{gridTemplateColumns:"minmax(210px, 280px) minmax(0, 1fr)"}:{gridTemplateColumns:"minmax(260px, 340px) minmax(0, 1fr)"}}function it(e){return{borderRight:"1px solid var(--sd-border)",borderBottom:0}}function mr(e){return e==="error"?{background:"var(--sd-error-dot)"}:e==="success"?{background:"var(--sd-success-dot)"}:e==="loading"?{background:"var(--sd-loading-dot)"}:{background:"var(--sd-idle-dot)"}}function ot(e){return e==="error"?{borderColor:"var(--sd-error-border)",color:"var(--sd-error-fg)"}:e==="success"?{borderColor:"var(--sd-success-border)",color:"var(--sd-success-fg)"}:e==="loading"?{borderColor:"var(--sd-loading-border)",color:"var(--sd-loading-fg)"}:{borderColor:"var(--sd-border)",color:"var(--sd-fg-muted)"}}const nr="semaphor-devtools-stylesheet",T="semaphor-devtools",at=`
2
2
  .${T} {
3
3
  --sd-bg: #ffffff;
4
4
  --sd-bg-muted: #fafafa;
@@ -1,9 +1,9 @@
1
1
  import { toSemaphorInputSnapshots as jr, toSemaphorInputBinding as Hr, toSemaphorActiveInputSnapshots as X, toSemaphorMatrixIntent as Pr, toSemaphorSqlIntent as Vr, toSemaphorInputOptionsIntent as Qr, toSemaphorRecordsIntent as Ur, toSemaphorAnalysisQueryOptions as Gr, toSemaphorAnalysisIntent as Jr, toSemaphorMetricIntent as Yr, hasSemaphorInputValue as ue, normalizeSemaphorInputOptions as hr, toSemaphorInputSpec as br } from "../data-app-sdk-adapters/index.js";
2
2
  import { jsxs as p, Fragment as vr, jsx as a } from "react/jsx-runtime";
3
3
  import { createContext as Ie, useContext as Q, useState as z, useRef as E, useEffect as B, useMemo as I, Fragment as Xr, useId as Sr, useCallback as D, useReducer as Zr } from "react";
4
- import { j as et, aj as rt, x as tt } from "../chunks/validators-DhTaCK1O.js";
5
- import { c as lo, ak as uo } from "../chunks/validators-DhTaCK1O.js";
6
- import "../chunks/analyze-result-contract-kaCNxjA7.js";
4
+ import { j as et, ak as rt, x as tt } from "../chunks/validators-B5t1s8oh.js";
5
+ import { c as lo, al as uo } from "../chunks/validators-B5t1s8oh.js";
6
+ import "../chunks/analyze-result-contract-B3agc2XU.js";
7
7
  import "../value-format-preferences/index.js";
8
8
  import { M as nt, a as it, S as ot, E as st, C as at } from "../chunks/search-BHsQIWBV.js";
9
9
  import { X as lt, C as dt, j as ut } from "../chunks/x-CXDkqdur.js";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../chunks/validators-DO-YuzgO.cjs"),c=require("../chunks/operators-DrTQsJXv.cjs");require("../chunks/analyze-result-contract-CMwVg9w2.cjs");require("../value-format-preferences/index.cjs");function p(i){var n,r,a;const t=b(i);return{version:1,kind:"metric",id:i.id,label:i.label,source:s(i),measures:t,primaryMeasure:M(i,t),dateField:i.dateField?o(i.dateField,"date"):void 0,timeGrain:i.timeGrain,dimensions:(n=i.dimensions)==null?void 0:n.map(e=>o(e,"dimension")),comparison:G(i.comparison),orderBy:i.orderBy?{field:o(i.orderBy.field),direction:i.orderBy.direction}:void 0,inputs:l(i.inputs),...(r=i.filters)!=null&&r.length?{filters:i.filters}:{},...i.relationshipHint?{relationshipHint:i.relationshipHint}:{},limit:i.limit,...(a=i.derivedFields)!=null&&a.length?{derivedFields:i.derivedFields}:{}}}function v(i){return{...p(i),...i.timeWindow?{timeWindow:i.timeWindow}:{},...i.analysis?{analysis:i.analysis}:{}}}function F(i){return{...i.chartTitle?{chartTitle:i.chartTitle}:{},...i.chartType?{chartType:i.chartType}:{},...i.driverMode?{driverMode:i.driverMode}:{},...i.includePopulation!==void 0?{includePopulation:i.includePopulation}:{},...i.calendarContext?{calendarContext:i.calendarContext}:{}}}function M(i,t){if(!i.primaryMeasure)return t[0]||{name:"",role:"measure"};const n=o(i.primaryMeasure,"measure"),r=k(n,t),a=r.length===1?r[0]:void 0;return a?I(n,a):n}function b(i){const t=[];for(const n of i.measures.map(r=>o(r,"measure"))){if(!n.name)continue;const r=t.findIndex(a=>R(a,n));if(r===-1){t.push(n);continue}t[r]=I(t[r],n)}return t}function R(i,t){return u.semaphorFieldRefsMatch(i,t)&&d(i)===d(t)}function w(i,t){return d(t)===d(i)}function H(i,t){return t.name!==i.name||i.source&&!u.semaphorFieldRefsMatch(t,i)?!1:w(i,t)}function k(i,t){const n=t.filter(r=>H(i,r));return i.aggregate!==void 0,n}function d(i){return u.semaphorMetricAggregate(i)}function I(i,t){if(i.aggregate&&t.aggregate&&i.aggregate!==t.aggregate)throw new Error(`Measure "${i.name}" was requested with conflicting aggregate semantics: ${i.aggregate} and ${t.aggregate}.`);return{...u.preferSemaphorFieldRefMetadata(i,t),aggregate:i.aggregate||t.aggregate}}function A(i){var n,r;if("sort"in i)throw new Error("semaphor.records supports orderBy for a single deterministic sort. Multiple sort clauses are not supported by the analytics protocol yet.");if(!V(i))throw new Error("semaphor.records needs at least one field.");const t=B(i.fields);return{version:1,kind:"records",id:i.id,label:i.label,source:s(i),fields:t,dateField:i.dateField?o(i.dateField,"date"):void 0,timeGrain:i.timeGrain,...i.timeWindow?{timeWindow:i.timeWindow}:{},...(n=i.filters)!=null&&n.length?{filters:i.filters}:{},orderBy:i.orderBy?{field:o(i.orderBy.field),direction:i.orderBy.direction}:void 0,inputs:l(i.inputs),...i.relationshipHint?{relationshipHint:i.relationshipHint}:{},limit:i.limit,...i.pagination?{pagination:i.pagination}:{},...i.totals?{totals:{mode:"server",measures:i.totals.measures.map(a=>o(a,"measure"))}}:{},...(r=i.derivedFields)!=null&&r.length?{derivedFields:i.derivedFields}:{}}}function B(i){return i.map(t=>{const n=o(t);if(!n.role)throw new Error(`semaphor.records field "${n.name}" needs an explicit role.`);return n})}function x(i){var n,r,a;const t=s(i);if(t.kind==="sql")throw new Error("semaphor.inputOptions requires a semantic or physical option source.");return{version:1,kind:"inputOptions",id:i.id,label:i.label,inputId:i.inputId,source:t,labelField:o(i.labelField,"dimension"),valueField:o(i.valueField,"dimension"),...i.searchField?{searchField:o(i.searchField,"dimension")}:{},...(n=i.disambiguationFields)!=null&&n.length?{disambiguationFields:i.disambiguationFields.map(e=>o(e,"dimension"))}:{},...i.population?{population:i.population}:{},...i.dependencies?{dependencies:i.dependencies}:{},search:i.search,limit:i.limit,...(r=i.inputs)!=null&&r.length?{inputs:i.inputs.map(e=>f(e))}:{},...(a=i.derivedFields)!=null&&a.length?{derivedFields:i.derivedFields}:{}}}function O(i){var t;return{version:1,kind:"sql",id:i.id,label:i.label,source:i.source,sql:i.sql,...i.defaultParameters?{defaultParameters:i.defaultParameters}:{},...i.pythonCode?{pythonCode:i.pythonCode}:{},...(t=i.fields)!=null&&t.length?{fields:i.fields.map(n=>o(n))}:{},inputs:l(i.inputs),limit:i.limit,...i.pagination?{pagination:i.pagination}:{},rationale:i.rationale}}function P(i){var t,n;return{version:1,kind:"matrix",id:i.id,label:i.label,source:s(i),rows:i.rows.map(r=>g(r,"dimension")),columns:(i.columns??[]).map(r=>g(r,"dimension")),values:i.values.map(q),...(t=i.filters)!=null&&t.length?{filters:i.filters}:{},inputs:l(i.inputs),...i.relationshipHint?{relationshipHint:i.relationshipHint}:{},...i.totals?{totals:i.totals}:{},...(n=i.sort)!=null&&n.length?{sort:i.sort}:{},...i.expansion?{expansion:i.expansion}:{},...i.layout?{layout:i.layout}:{},...i.displayLimits?{displayLimits:i.displayLimits}:{}}}function g(i,t){return z(i)?{...i,field:o(i.field,t)}:{field:o(i,t)}}function q(i){return C(i)?{...i,field:o(i.field,"measure")}:{field:o(i,"measure"),aggregate:i.aggregate}}function z(i){return"field"in i}function C(i){return"field"in i}function f(i){if("toAnalyticsInput"in i){const e=i.toAnalyticsInput();return{inputId:e.inputId,kind:e.kind,...e.controlRole?{controlRole:e.controlRole}:{},...e.operator?{operator:e.operator}:{},...e.field?{field:e.field}:{},...e.relationshipHint?{relationshipHint:e.relationshipHint}:{}}}if("id"in i){const e=h(i);return{inputId:e.inputId,kind:e.kind,...e.controlRole?{controlRole:e.controlRole}:{},...e.operator?{operator:e.operator}:{},...e.field?{field:e.field}:{},...e.relationshipHint?{relationshipHint:e.relationshipHint}:{}}}const t="kind"in i?i.kind:void 0,n="operator"in i?S(i.operator,i.inputId):void 0,r="controlRole"in i?i.controlRole:"role"in i?i.role:void 0,a=T(r)?r:void 0;return{inputId:i.inputId,...t?{kind:t}:{},...a?{controlRole:a}:{},...n?{operator:n}:{},...i.field?{field:i.field}:{},...i.relationshipHint?{relationshipHint:i.relationshipHint}:{}}}function T(i){return i==="grain"||i==="measure"||i==="dimension"||i==="aggregation"||i==="sqlParam"}function E(i){const t=l(i);return t.length>0?t:void 0}function y(i){return(i||[]).map(L)}function W(i){return y(i).filter(t=>t.isActive)}function h(i){if(i.kind==="filter"){const t=S(i.operator,i.id);return{inputId:i.id,kind:i.kind,label:i.label,field:o(i.field,"dimension"),operator:t||"in",...i.relationshipHint?{relationshipHint:i.relationshipHint}:{}}}return{inputId:i.id,kind:i.kind,label:i.label,controlRole:i.role}}function $(i=[]){return i.map(t=>typeof t=="object"?t:{label:String(t),value:t})}function m(i){return i==null?!1:Array.isArray(i)?i.length>0:typeof i=="string"?i.trim().length>0:!0}function L(i){if("toAnalyticsInput"in i)return i.toAnalyticsInput();if("kind"in i&&"isActive"in i)return i;if("id"in i){const t=h(i),n=Object.prototype.hasOwnProperty.call(i,"value")?i.value:i.defaultValue;return{inputId:t.inputId,kind:t.kind,label:t.label,...t.field?{field:t.field}:{},...t.operator?{operator:t.operator}:{},...t.controlRole?{controlRole:t.controlRole}:{},...t.relationshipHint?{relationshipHint:t.relationshipHint}:{},value:n,isActive:m(n)}}return{...i,kind:"filter",isActive:m(i.value),value:i.value}}function s(i){return i.source}function V(i){var t;return!!((t=i.fields)!=null&&t.length)}function o(i,t){return{...i,role:i.role||t}}function l(i){return(i||[]).map(f)}function G(i){if(i)return i}function S(i,t){if(i===void 0)return;const n=c.normalizeSemaphorInputOperator(i);if(!n)throw new Error(`useSemaphorInput "${t}" uses unsupported filter operator "${i}".`);return n}exports.hasSemaphorInputValue=m;exports.normalizeSemaphorInputOptions=$;exports.toSemaphorActiveInputSnapshots=W;exports.toSemaphorAnalysisIntent=v;exports.toSemaphorAnalysisQueryOptions=F;exports.toSemaphorInputBinding=f;exports.toSemaphorInputBindings=E;exports.toSemaphorInputOptionsIntent=x;exports.toSemaphorInputSnapshots=y;exports.toSemaphorInputSpec=h;exports.toSemaphorMatrixIntent=P;exports.toSemaphorMetricIntent=p;exports.toSemaphorRecordsIntent=A;exports.toSemaphorSqlIntent=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../chunks/validators-DcshgK7w.cjs"),c=require("../chunks/operators-DrTQsJXv.cjs");require("../chunks/analyze-result-contract-OgPk-zGu.cjs");require("../value-format-preferences/index.cjs");function p(i){var n,r,a;const t=b(i);return{version:1,kind:"metric",id:i.id,label:i.label,source:s(i),measures:t,primaryMeasure:M(i,t),dateField:i.dateField?o(i.dateField,"date"):void 0,timeGrain:i.timeGrain,dimensions:(n=i.dimensions)==null?void 0:n.map(e=>o(e,"dimension")),comparison:G(i.comparison),orderBy:i.orderBy?{field:o(i.orderBy.field),direction:i.orderBy.direction}:void 0,inputs:l(i.inputs),...(r=i.filters)!=null&&r.length?{filters:i.filters}:{},...i.relationshipHint?{relationshipHint:i.relationshipHint}:{},limit:i.limit,...(a=i.derivedFields)!=null&&a.length?{derivedFields:i.derivedFields}:{}}}function v(i){return{...p(i),...i.timeWindow?{timeWindow:i.timeWindow}:{},...i.analysis?{analysis:i.analysis}:{}}}function F(i){return{...i.chartTitle?{chartTitle:i.chartTitle}:{},...i.chartType?{chartType:i.chartType}:{},...i.driverMode?{driverMode:i.driverMode}:{},...i.includePopulation!==void 0?{includePopulation:i.includePopulation}:{},...i.calendarContext?{calendarContext:i.calendarContext}:{}}}function M(i,t){if(!i.primaryMeasure)return t[0]||{name:"",role:"measure"};const n=o(i.primaryMeasure,"measure"),r=k(n,t),a=r.length===1?r[0]:void 0;return a?I(n,a):n}function b(i){const t=[];for(const n of i.measures.map(r=>o(r,"measure"))){if(!n.name)continue;const r=t.findIndex(a=>R(a,n));if(r===-1){t.push(n);continue}t[r]=I(t[r],n)}return t}function R(i,t){return u.semaphorFieldRefsMatch(i,t)&&d(i)===d(t)}function w(i,t){return d(t)===d(i)}function H(i,t){return t.name!==i.name||i.source&&!u.semaphorFieldRefsMatch(t,i)?!1:w(i,t)}function k(i,t){const n=t.filter(r=>H(i,r));return i.aggregate!==void 0,n}function d(i){return u.semaphorMetricAggregate(i)}function I(i,t){if(i.aggregate&&t.aggregate&&i.aggregate!==t.aggregate)throw new Error(`Measure "${i.name}" was requested with conflicting aggregate semantics: ${i.aggregate} and ${t.aggregate}.`);return{...u.preferSemaphorFieldRefMetadata(i,t),aggregate:i.aggregate||t.aggregate}}function A(i){var n,r;if("sort"in i)throw new Error("semaphor.records supports orderBy for a single deterministic sort. Multiple sort clauses are not supported by the analytics protocol yet.");if(!V(i))throw new Error("semaphor.records needs at least one field.");const t=B(i.fields);return{version:1,kind:"records",id:i.id,label:i.label,source:s(i),fields:t,dateField:i.dateField?o(i.dateField,"date"):void 0,timeGrain:i.timeGrain,...i.timeWindow?{timeWindow:i.timeWindow}:{},...(n=i.filters)!=null&&n.length?{filters:i.filters}:{},orderBy:i.orderBy?{field:o(i.orderBy.field),direction:i.orderBy.direction}:void 0,inputs:l(i.inputs),...i.relationshipHint?{relationshipHint:i.relationshipHint}:{},limit:i.limit,...i.pagination?{pagination:i.pagination}:{},...i.totals?{totals:{mode:"server",measures:i.totals.measures.map(a=>o(a,"measure"))}}:{},...(r=i.derivedFields)!=null&&r.length?{derivedFields:i.derivedFields}:{}}}function B(i){return i.map(t=>{const n=o(t);if(!n.role)throw new Error(`semaphor.records field "${n.name}" needs an explicit role.`);return n})}function x(i){var n,r,a;const t=s(i);if(t.kind==="sql")throw new Error("semaphor.inputOptions requires a semantic or physical option source.");return{version:1,kind:"inputOptions",id:i.id,label:i.label,inputId:i.inputId,source:t,labelField:o(i.labelField,"dimension"),valueField:o(i.valueField,"dimension"),...i.searchField?{searchField:o(i.searchField,"dimension")}:{},...(n=i.disambiguationFields)!=null&&n.length?{disambiguationFields:i.disambiguationFields.map(e=>o(e,"dimension"))}:{},...i.population?{population:i.population}:{},...i.dependencies?{dependencies:i.dependencies}:{},search:i.search,limit:i.limit,...(r=i.inputs)!=null&&r.length?{inputs:i.inputs.map(e=>f(e))}:{},...(a=i.derivedFields)!=null&&a.length?{derivedFields:i.derivedFields}:{}}}function O(i){var t;return{version:1,kind:"sql",id:i.id,label:i.label,source:i.source,sql:i.sql,...i.defaultParameters?{defaultParameters:i.defaultParameters}:{},...i.pythonCode?{pythonCode:i.pythonCode}:{},...(t=i.fields)!=null&&t.length?{fields:i.fields.map(n=>o(n))}:{},inputs:l(i.inputs),limit:i.limit,...i.pagination?{pagination:i.pagination}:{},rationale:i.rationale}}function P(i){var t,n;return{version:1,kind:"matrix",id:i.id,label:i.label,source:s(i),rows:i.rows.map(r=>g(r,"dimension")),columns:(i.columns??[]).map(r=>g(r,"dimension")),values:i.values.map(q),...(t=i.filters)!=null&&t.length?{filters:i.filters}:{},inputs:l(i.inputs),...i.relationshipHint?{relationshipHint:i.relationshipHint}:{},...i.totals?{totals:i.totals}:{},...(n=i.sort)!=null&&n.length?{sort:i.sort}:{},...i.expansion?{expansion:i.expansion}:{},...i.layout?{layout:i.layout}:{},...i.displayLimits?{displayLimits:i.displayLimits}:{}}}function g(i,t){return z(i)?{...i,field:o(i.field,t)}:{field:o(i,t)}}function q(i){return C(i)?{...i,field:o(i.field,"measure")}:{field:o(i,"measure"),aggregate:i.aggregate}}function z(i){return"field"in i}function C(i){return"field"in i}function f(i){if("toAnalyticsInput"in i){const e=i.toAnalyticsInput();return{inputId:e.inputId,kind:e.kind,...e.controlRole?{controlRole:e.controlRole}:{},...e.operator?{operator:e.operator}:{},...e.field?{field:e.field}:{},...e.relationshipHint?{relationshipHint:e.relationshipHint}:{}}}if("id"in i){const e=h(i);return{inputId:e.inputId,kind:e.kind,...e.controlRole?{controlRole:e.controlRole}:{},...e.operator?{operator:e.operator}:{},...e.field?{field:e.field}:{},...e.relationshipHint?{relationshipHint:e.relationshipHint}:{}}}const t="kind"in i?i.kind:void 0,n="operator"in i?S(i.operator,i.inputId):void 0,r="controlRole"in i?i.controlRole:"role"in i?i.role:void 0,a=T(r)?r:void 0;return{inputId:i.inputId,...t?{kind:t}:{},...a?{controlRole:a}:{},...n?{operator:n}:{},...i.field?{field:i.field}:{},...i.relationshipHint?{relationshipHint:i.relationshipHint}:{}}}function T(i){return i==="grain"||i==="measure"||i==="dimension"||i==="aggregation"||i==="sqlParam"}function E(i){const t=l(i);return t.length>0?t:void 0}function y(i){return(i||[]).map(L)}function W(i){return y(i).filter(t=>t.isActive)}function h(i){if(i.kind==="filter"){const t=S(i.operator,i.id);return{inputId:i.id,kind:i.kind,label:i.label,field:o(i.field,"dimension"),operator:t||"in",...i.relationshipHint?{relationshipHint:i.relationshipHint}:{}}}return{inputId:i.id,kind:i.kind,label:i.label,controlRole:i.role}}function $(i=[]){return i.map(t=>typeof t=="object"?t:{label:String(t),value:t})}function m(i){return i==null?!1:Array.isArray(i)?i.length>0:typeof i=="string"?i.trim().length>0:!0}function L(i){if("toAnalyticsInput"in i)return i.toAnalyticsInput();if("kind"in i&&"isActive"in i)return i;if("id"in i){const t=h(i),n=Object.prototype.hasOwnProperty.call(i,"value")?i.value:i.defaultValue;return{inputId:t.inputId,kind:t.kind,label:t.label,...t.field?{field:t.field}:{},...t.operator?{operator:t.operator}:{},...t.controlRole?{controlRole:t.controlRole}:{},...t.relationshipHint?{relationshipHint:t.relationshipHint}:{},value:n,isActive:m(n)}}return{...i,kind:"filter",isActive:m(i.value),value:i.value}}function s(i){return i.source}function V(i){var t;return!!((t=i.fields)!=null&&t.length)}function o(i,t){return{...i,role:i.role||t}}function l(i){return(i||[]).map(f)}function G(i){if(i)return i}function S(i,t){if(i===void 0)return;const n=c.normalizeSemaphorInputOperator(i);if(!n)throw new Error(`useSemaphorInput "${t}" uses unsupported filter operator "${i}".`);return n}exports.hasSemaphorInputValue=m;exports.normalizeSemaphorInputOptions=$;exports.toSemaphorActiveInputSnapshots=W;exports.toSemaphorAnalysisIntent=v;exports.toSemaphorAnalysisQueryOptions=F;exports.toSemaphorInputBinding=f;exports.toSemaphorInputBindings=E;exports.toSemaphorInputOptionsIntent=x;exports.toSemaphorInputSnapshots=y;exports.toSemaphorInputSpec=h;exports.toSemaphorMatrixIntent=P;exports.toSemaphorMetricIntent=p;exports.toSemaphorRecordsIntent=A;exports.toSemaphorSqlIntent=O;
@@ -1,6 +1,6 @@
1
- import { s as m, p as I, c as p } from "../chunks/validators-DhTaCK1O.js";
1
+ import { s as m, p as I, c as p } from "../chunks/validators-B5t1s8oh.js";
2
2
  import { n as c } from "../chunks/operators-C8TxpM4C.js";
3
- import "../chunks/analyze-result-contract-kaCNxjA7.js";
3
+ import "../chunks/analyze-result-contract-B3agc2XU.js";
4
4
  import "../value-format-preferences/index.js";
5
5
  function F(i) {
6
6
  var n, e, a;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../chunks/validators-DO-YuzgO.cjs");require("../chunks/analyze-result-contract-CMwVg9w2.cjs");require("../value-format-preferences/index.cjs");const Q=require("../chunks/report-runtime-context-CLtzrZdC.cjs"),h=require("../data-app-sdk-adapters/index.cjs");function E({intent:e,field:r,catalogField:o,relativePath:t}){const i=J({intent:e,field:r,relativePath:t});if(!i||i.allowedRelatedRoles.length===0)return!1;const a=p(r,i.selectedField),s=b(o),n=m(a);return j(s,i.allowedRelatedRoles)?n===s:!1}function W(e){return e.kind==="records"?G(e):e.kind==="metric"?X(e):Y(e)}function b(e){const r=c.normalizeAnalyticsCatalogName(e.role);if(r==="measure")return"measure";if(r==="id")return"id";const o=c.normalizeAnalyticsCatalogDataType(e.dataType);if(r==="date"||o==="date"||o==="datetime")return"date";if(r==="dimension")return"dimension"}function j(e,r){return!!(e&&r.includes(e))}function p(e,r){const o=m(e);if(o)return e.role===o?e:{...e,role:o};const t=r?m(r):void 0;return t?{...e,role:t}:e}function f(e,r){return e.find(o=>T(o,r))}function S(e){return[...e.rows.map(r=>r.field),...(e.columns||[]).map(r=>r.field)]}function J({intent:e,field:r,relativePath:o}){if(e.kind==="records")return U(e,r,o);if(e.kind==="metric")return L(e,r,o);if(e.kind==="matrix")return V(e,r,o)}function U(e,r,o){if(o.startsWith("spec.fields."))return{allowedRelatedRoles:["dimension","date","id"]};if(o==="spec.dateField"&&!e.timeWindow)return{allowedRelatedRoles:["date"]};if(o==="spec.orderBy.field"){const t=f(M(e),r);return{selectedField:t,allowedRelatedRoles:t?R(t):[]}}}function L(e,r,o){if(o.startsWith("spec.dimensions."))return{allowedRelatedRoles:["dimension"]};if(o==="spec.orderBy.field"){const t=f(e.dimensions||[],r);return{selectedField:t,allowedRelatedRoles:t?["dimension"]:[]}}}function V(e,r,o){if(re(o))return{allowedRelatedRoles:["dimension","date"]};if(oe(o)){const t=f(S(e),r);return{selectedField:t,allowedRelatedRoles:q(t)}}}function G(e){var t,i;const r=M(e),o=(t=e.orderBy)!=null&&t.field?f(r,e.orderBy.field):void 0;return _([...r.map(a=>l(a,R(a))),...(i=e.orderBy)!=null&&i.field?[l(p(e.orderBy.field,o),o?R(o):[],{unsupportedRelatedRoleMessage:"Joined records projections support related sort fields only when the same related field is included in spec.fields.",recommendedNextStep:"Add the related sort field to spec.fields, or keep orderBy fields on the base source."})]:[]])}function X(e){var o,t;const r=(o=e.orderBy)!=null&&o.field?f(e.dimensions||[],e.orderBy.field):void 0;return _([...e.measures.map(i=>l(i,[])),...e.primaryMeasure?[l(e.primaryMeasure,[])]:[],...(e.dimensions||[]).map(i=>l(i,["dimension"])),...e.dateField?[l({...e.dateField,role:"date"},[])]:[],...(t=e.orderBy)!=null&&t.field?[l(p(e.orderBy.field,r),r?["dimension"]:[],{unsupportedRelatedRoleMessage:"Joined metric projections support related orderBy fields only when the same related field is declared in spec.dimensions.",recommendedNextStep:"Add the related field as a metric dimension when it should participate in the grouped result, or keep orderBy fields on the base source."})]:[]])}function Y(e){const r=[...e.rows,...e.columns||[]];return _([...r.map(o=>l(o.field,q(o.field))),...r.flatMap(o=>{var a;if(((a=o.sortBy)==null?void 0:a.by.kind)!=="field")return[];const t=o.sortBy.by.field,i=f(S(e),t);return[l(p(t,i),q(i),{unsupportedRelatedRoleMessage:"Joined matrix projections support related axis sort fields only when the same related field is used as a row/column axis.",recommendedNextStep:"Use a related field as a row or column axis, or keep axis sort fields on the base source."})]}),...e.values.map(o=>l(o.field,[],{unsupportedRelatedRoleMessage:"Joined matrix projections support related row/column dimensions or dates only. Related value fields are not supported in this phase.",recommendedNextStep:"Keep matrix values on the base source, or use governed SQL for unsupported aggregate-safe joined values."})),...(e.sort||[]).flatMap(o=>{if(o.by.kind!=="field")return[];const t=o.by.field,i=f(S(e),t);return[l(p(t,i),q(i),{unsupportedRelatedRoleMessage:"Joined matrix projections support related top-level sort fields only when the same related field is used as a row/column axis.",recommendedNextStep:"Use a related field as a row or column axis, or keep matrix sort fields on the base source."})]})])}function R(e){const r=e?m(e):void 0;return r==="dimension"?["dimension"]:r==="date"?["date"]:r==="id"?["id"]:["dimension","date","id"]}function q(e){const r=e?m(e):void 0;return r==="date"?["date"]:r==="dimension"?["dimension"]:[]}function l(e,r,o={}){return{field:p(e),allowedRelatedRoles:r,...o}}function _(e){const r=[];return e.forEach(o=>{r.some(t=>Z(t,o))||r.push(o)}),r}function M(e){const r=[...e.fields];return e.dateField&&!r.some(o=>B(o,e.dateField))&&r.push({...e.dateField,role:"date"}),r}function Z(e,r){return T(e.field,r.field)&&e.allowedRelatedRoles.join("|")===r.allowedRelatedRoles.join("|")&&(e.unsupportedRelatedRoleMessage||"")===(r.unsupportedRelatedRoleMessage||"")&&(e.recommendedNextStep||"")===(r.recommendedNextStep||"")}function B(e,r){return c.semaphorFieldRefsMatch(e,r)}function T(e,r){return B(e,r)&&ee(m(e),m(r))}function ee(e,r){return!!(e&&(!r||e===r))}function m(e){return b(e)}function re(e){const r=e.split(".");return r.length===4&&r[0]==="spec"&&(r[1]==="rows"||r[1]==="columns")&&x(r[2])&&r[3]==="field"}function oe(e){const r=e.split(".");return r.length===6&&r[0]==="spec"&&(r[1]==="rows"||r[1]==="columns")&&x(r[2])&&r[3]==="sortBy"&&r[4]==="by"&&r[5]==="field"||r.length===5&&r[0]==="spec"&&r[1]==="sort"&&x(r[2])&&r[3]==="by"&&r[4]==="field"}function x(e){return e===void 0||e.trim()===""?!1:Number.isInteger(Number(e))&&Number(e)>=0}function te({intent:e,field:r,relativePath:o,baseCatalog:t,fieldCatalogs:i}){const a=v(r,e.source),s=c.semaphorSourcesReferToSameDataset(a,e.source);if(!s&&!ae(e.source,a))return{ok:!1,code:"invalid_source_ref",message:`Field "${r.name}" references a related Semaphor source outside the query's semantic domain.`,pathSuffix:".source",source:a};const n=s?t:I(i,a);if(!n)return{ok:!1,code:"invalid_source_ref",message:`Field "${r.name}" references a Semaphor source that is not present in the visible field catalog.`,pathSuffix:".source",source:a};const d=F(n,r,e.source);return d?!s&&!ie({intent:e,field:r,catalogField:d,relativePath:o})?{ok:!1,code:"unsupported_joined_projection",message:`Field "${r.name}" references a related Semaphor source, but this query kind does not support joined projections for that field yet.`,pathSuffix:".source",source:a}:{ok:!0,source:a,catalogField:d,usesBaseSource:s}:{ok:!1,code:"missing_field",message:`Field "${r.name}" is not visible on the selected Semaphor source.`,source:a}}function ie({intent:e,field:r,catalogField:o,relativePath:t}){return E({intent:e,field:r,catalogField:o,relativePath:t})}function ae(e,r){return e.kind==="semantic"&&r.kind==="semantic"&&e.domainId===r.domainId}function I(e,r){return e.find(o=>$(o,r))}function F(e,r,o){const t=v(r,o);if($(e,t))return e.fields.find(i=>se(i,r)&&$(e,v(i,e.source)))}function w(e){return c.normalizeAnalyticsCatalogName(e)}function v(e,r){return e.source||r}function $(e,r){return[e.source,...e.sourceAliases||[]].some(o=>c.semaphorSourcesReferToSameDataset(o,r))}function se(e,r){return!!(e.name&&r.name&&e.name===r.name)}function D(e,r={}){const o=r.pathPrefix||"analysisOptions";if(e===void 0)return{ok:!0};if(!e||typeof e!="object"||Array.isArray(e))return u(o,"Data App analysis options must be an object.");const t=e,i={};if(t.chartTitle!==void 0){if(typeof t.chartTitle!="string")return u(`${o}.chartTitle`,'Data App analysis option "chartTitle" must be a string.');i.chartTitle=t.chartTitle}if(t.chartType!==void 0){if(typeof t.chartType!="string")return u(`${o}.chartType`,'Data App analysis option "chartType" must be a string.');i.chartType=t.chartType}if(t.driverMode!==void 0){if(!le(t.driverMode))return u(`${o}.driverMode`,'Data App analysis option "driverMode" must be absolute_delta, largest_negative, largest_positive, positive_and_negative, or all.');i.driverMode=t.driverMode}if(t.includePopulation!==void 0){if(typeof t.includePopulation!="boolean")return u(`${o}.includePopulation`,'Data App analysis option "includePopulation" must be a boolean.');i.includePopulation=t.includePopulation}if(t.calendarContext!==void 0){const a=ce(t.calendarContext,{pathPrefix:`${o}.calendarContext`,validateTimezone:r.validateTimezone});if(!a.ok)return a;i.calendarContext=a.calendarContext}return{ok:!0,analysisOptions:i}}function ne(e){const r=e.queries.map((i,a)=>de(i,a,{fieldCatalogs:e.fieldCatalogs||[],requireFieldCatalog:!!e.requireFieldCatalog,validateTimezone:e.validateTimezone})),o=r.flatMap(i=>i.diagnostics),t=r.map(i=>i.executionResult);return{ok:o.every(i=>i.severity!=="error"),diagnostics:o,queries:r,intents:r.flatMap(i=>i.intent?[i.intent]:[]),executionResults:t}}function de(e,r,o){const t=`queries.${r}`;try{const i=ue(e),a=xe(e,i),s=c.validateSemaphorAnalyticsIntent(i),n=[...Se({querySpec:e,queryId:a,intent:i,pathPrefix:t}),...s.errors.map(g=>C(g,{queryHook:e.queryHook,queryId:a,pathPrefix:t,severity:"error",intent:i})),...s.warnings.map(g=>C(g,{queryHook:e.queryHook,queryId:a,pathPrefix:t,severity:"warning",intent:i})),...pe({querySpec:e,queryId:a,intent:i,pathPrefix:t,fieldCatalogs:o.fieldCatalogs,requireFieldCatalog:o.requireFieldCatalog}),...qe({querySpec:e,queryId:a,intent:i,pathPrefix:t,validateTimezone:o.validateTimezone})],d=Re(s,n);return{queryHook:e.queryHook,queryId:a,intent:i,diagnostics:n,executionResult:H({intent:i,validation:d,diagnostics:n})}}catch(i){const a={severity:"error",code:"invalid_query_spec",message:i instanceof Error?i.message:String(i),path:t,queryHook:e.queryHook,queryId:K(e.spec)},s=O([a]);return{queryHook:e.queryHook,queryId:a.queryId,diagnostics:[a],executionResult:H({validation:s,diagnostics:[a]})}}}function u(e,r){return{ok:!1,issues:[{code:"invalid_analysis_option",message:r,path:e}]}}function z(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function le(e){return e==="absolute_delta"||e==="largest_negative"||e==="largest_positive"||e==="positive_and_negative"||e==="all"}function ce(e,r){if(!e||typeof e!="object"||Array.isArray(e))return u(r.pathPrefix,'Data App analysis option "calendarContext" must be an object.');const o=e,t=o.tz;let i=t;if(typeof t=="string"&&r.validateTimezone&&(i=r.validateTimezone(t)),i===null)return u(`${r.pathPrefix}.tz`,'Data App analysis option "calendarContext.tz" must be a valid timezone string.');const a=Q.parseCalendarContext({...o,tz:i});if(!a.ok){const s=a.issues[0];return u(s!=null&&s.path?`${r.pathPrefix}.${s.path}`:r.pathPrefix,`Data App analysis option "calendarContext" is invalid: ${(s==null?void 0:s.message)??"invalid value"}.`)}return{ok:!0,calendarContext:a.value}}function ue(e){return fe(e.spec)}function fe(e){if(!z(e))throw new Error("useSemaphorQuery spec must be an object.");if(e.queryKind==="metric")return h.toSemaphorMetricIntent(e);if(e.queryKind==="analysis")return h.toSemaphorAnalysisIntent(e);if(e.queryKind==="records")return h.toSemaphorRecordsIntent(e);if(e.queryKind==="sql")return h.toSemaphorSqlIntent(e);if(e.queryKind==="matrix")return h.toSemaphorMatrixIntent(e);if(e.queryKind==="inputOptions")return h.toSemaphorInputOptionsIntent(e);throw new Error("useSemaphorQuery spec.queryKind must be metric, analysis, records, inputOptions, sql, or matrix.")}function pe(e){if(e.intent.kind==="sql")return[];if(e.fieldCatalogs.length===0&&!e.requireFieldCatalog)return[];const r=I(e.fieldCatalogs,e.intent.source);if(!r)return[{severity:"error",code:"invalid_source_ref",message:`Source ref for ${e.querySpec.queryHook} does not match a visible Semaphor source.`,path:`${e.pathPrefix}.spec.source`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source}];const o=ye({...e,catalog:r}),t={...r,fields:[...r.fields,...Ie(e.intent,r,e.intent.source)]};return[...o,...me({...e,fieldCatalogs:e.fieldCatalogs}),...he({...e,catalog:t,fieldCatalogs:e.fieldCatalogs}),...ge({...e,catalog:t,fieldCatalogs:e.fieldCatalogs})]}function me(e){var o;if(e.intent.kind!=="inputOptions"||((o=e.intent.population)==null?void 0:o.kind)!=="related_population")return[];const r=e.intent.population.baseSource;return I(e.fieldCatalogs,r)?[]:[{severity:"error",code:"invalid_source_ref",message:"Input options related population baseSource does not match a visible Semaphor source.",path:`${e.pathPrefix}.spec.population.baseSource`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:r}]}function ye(e){const r=N(e.intent);if(r.length===0)return[];const o=[],t=new Set;return r.forEach((i,a)=>{const s=`${e.pathPrefix}.spec.derivedFields.${a}`,n=w(i.name);n&&(t.has(n)&&o.push({severity:"error",code:"duplicate_derived_field",message:`Derived field "${i.name}" is declared more than once.`,path:`${s}.name`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source}),t.add(n),e.catalog.fields.some(d=>w(d.name)===n)&&o.push({severity:"error",code:"derived_field_name_collision",message:`Derived field "${i.name}" conflicts with a field already visible on the selected Semaphor source.`,path:`${s}.name`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source})),Object.entries(i.inputs||{}).forEach(([d,g])=>{const y=ke(g);if(!y)return;const k=v(y,e.intent.source);if(!c.semaphorSourcesReferToSameDataset(k,e.intent.source)){o.push({severity:"error",code:"unsupported_derived_field_source",message:`Derived field "${i.name}" input "${d}" references a different Semaphor source. App-local derived fields must use fields from the query source.`,path:`${s}.inputs.${d}`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:k,field:y});return}F(e.catalog,y,e.intent.source)||o.push({severity:"error",code:"missing_field",message:`Derived field "${i.name}" input "${d}" references field "${y.name}", which is not visible on the selected Semaphor source.`,path:`${s}.inputs.${d}`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:k,field:y})})}),o}function he(e){return Fe(e.intent).flatMap(({field:r,path:o})=>{const t=te({intent:e.intent,field:r,relativePath:o,baseCatalog:e.catalog,fieldCatalogs:e.fieldCatalogs});return t.ok?[]:[{severity:"error",code:t.code,message:t.message,path:`${e.pathPrefix}.${o}${t.pathSuffix||""}`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:t.source,field:r}]})}function ge(e){return("inputs"in e.intent?e.intent.inputs||[]:[]).flatMap((o,t)=>{if(!o.field)return[];const i=v(o.field,e.intent.source);if(!c.semaphorSourcesReferToSameDataset(i,e.intent.source)){if(ve(e.intent,i)){const a=I(e.fieldCatalogs,i);return a?F(a,o.field,i)?[]:[{severity:"error",code:"missing_field",message:`Input "${o.inputId}" references field "${o.field.name}", which is not visible on the selected Semaphor source.`,path:`${e.pathPrefix}.spec.inputs.${t}.field`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]:[{severity:"error",code:"invalid_source_ref",message:`Input "${o.inputId}" references a Semaphor source that is not present in the visible field catalog.`,path:`${e.pathPrefix}.spec.inputs.${t}.field.source`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]}return[{severity:"error",code:"unsupported_input_filter_composition",message:`Input "${o.inputId}" filters a different Semaphor source than the query, and no relationship-aware semantic validation path is available for this query kind.`,path:`${e.pathPrefix}.spec.inputs.${t}.field`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]}return F(e.catalog,o.field,e.intent.source)?[]:[{severity:"error",code:"missing_field",message:`Input "${o.inputId}" references field "${o.field.name}", which is not visible on the selected Semaphor source.`,path:`${e.pathPrefix}.spec.inputs.${t}.field`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]})}function ve(e,r){return e.source.kind==="semantic"&&r.kind==="semantic"&&r.domainId===e.source.domainId}function qe(e){if(e.querySpec.spec.queryKind!=="analysis")return[];const r=D(e.querySpec.spec,{pathPrefix:`${e.pathPrefix}.spec`,validateTimezone:e.validateTimezone});return r.ok?[]:r.issues.map(o=>({severity:"error",code:o.code,message:o.message,path:o.path,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source}))}function Se(e){return e.querySpec.spec.queryKind!=="sql"?[]:z(e.querySpec.spec)?Object.prototype.hasOwnProperty.call(e.querySpec.spec,"parameters")?[{severity:"error",code:"deprecated_sql_parameters",message:"semaphor.sql uses defaultParameters for static SQL param(...) fallback values. The legacy parameters field is not supported.",path:`${e.pathPrefix}.spec.parameters`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id}]:[]:[]}function Fe(e){return e.kind==="metric"?[...e.measures.map((r,o)=>({field:r,path:`spec.measures.${o}`})),...e.primaryMeasure?[{field:e.primaryMeasure,path:"spec.primaryMeasure"}]:[],...e.dateField?[{field:e.dateField,path:"spec.dateField"}]:[],...(e.dimensions||[]).map((r,o)=>({field:r,path:`spec.dimensions.${o}`})),...e.orderBy?[{field:e.orderBy.field,path:"spec.orderBy.field"}]:[],...(e.filters||[]).map((r,o)=>({field:r.field,path:`spec.filters.${o}.field`}))]:e.kind==="records"?[...e.fields.map((r,o)=>({field:r,path:`spec.fields.${o}`})),...e.dateField?[{field:e.dateField,path:"spec.dateField"}]:[],...e.orderBy?[{field:e.orderBy.field,path:"spec.orderBy.field"}]:[],...(e.filters||[]).map((r,o)=>({field:r.field,path:`spec.filters.${o}.field`}))]:e.kind==="inputOptions"?[{field:e.labelField,path:"spec.labelField"},{field:e.valueField,path:"spec.valueField"},...e.searchField?[{field:e.searchField,path:"spec.searchField"}]:[],...(e.disambiguationFields||[]).map((r,o)=>({field:r,path:`spec.disambiguationFields.${o}`}))]:e.kind==="matrix"?[...e.rows.map((r,o)=>({field:r.field,path:`spec.rows.${o}.field`})),...e.rows.flatMap((r,o)=>{var t;return((t=r.sortBy)==null?void 0:t.by.kind)==="field"?[{field:r.sortBy.by.field,path:`spec.rows.${o}.sortBy.by.field`}]:[]}),...(e.columns||[]).map((r,o)=>({field:r.field,path:`spec.columns.${o}.field`})),...(e.columns||[]).flatMap((r,o)=>{var t;return((t=r.sortBy)==null?void 0:t.by.kind)==="field"?[{field:r.sortBy.by.field,path:`spec.columns.${o}.sortBy.by.field`}]:[]}),...e.values.map((r,o)=>({field:r.field,path:`spec.values.${o}.field`})),...(e.sort||[]).flatMap((r,o)=>r.by.kind==="field"?[{field:r.by.field,path:`spec.sort.${o}.by.field`}]:[]),...(e.filters||[]).map((r,o)=>({field:r.field,path:`spec.filters.${o}.field`}))]:[]}function N(e){return!("derivedFields"in e)||!Array.isArray(e.derivedFields)?[]:e.derivedFields}function Ie(e,r,o){return N(e).map(t=>({name:t.name,label:t.label,role:t.resultRole,dataType:t.dataType,source:r.source||o,...t.defaultAggregate?{aggregate:t.defaultAggregate}:{}}))}function ke(e){if(!(!e||typeof e!="object"))return e.field}function C(e,r){return{severity:r.severity,code:e.code||"invalid_analytics_intent",message:e.message,path:e.path?`${r.pathPrefix}.spec.${e.path}`:r.pathPrefix,queryHook:r.queryHook,queryId:r.queryId,intentId:r.intent.id,source:r.intent.source}}function Re(e,r){const o=O(r);return{ok:o.ok&&e.ok,errors:A([...e.errors,...o.errors]),warnings:A([...e.warnings,...o.warnings]),repairHints:[...e.repairHints,...o.repairHints]}}function O(e){const r=e.filter(t=>t.severity==="error").map(P),o=e.filter(t=>t.severity==="warning").map(P);return{ok:r.length===0,errors:r,warnings:o,repairHints:r.map(t=>{var i,a;return{code:t.code,message:t.message,fieldRole:t.fieldRole,invalidField:(i=t.repairHint)==null?void 0:i.invalidField,recommendedNextStep:((a=t.repairHint)==null?void 0:a.recommendedNextStep)||"Update the Data App SDK query spec to use visible Semaphor source and field refs."}})}}function P(e){var r;return{code:e.code,message:e.message,path:e.path,fieldRole:e.code==="invalid_source_ref"?"source":void 0,repairHint:{code:e.code,message:e.message,invalidField:(r=e.field)==null?void 0:r.name,fieldRole:e.code==="invalid_source_ref"?"source":void 0,recommendedNextStep:e.code==="unsupported_input_filter_composition"?"Use an input field from the same Semaphor source as the query, or split the query into separate source-scoped queries.":"Update the query spec to use a visible Semaphor source and field ref."}}}function A(e){const r=new Set;return e.filter(o=>{const t=`${o.code}:${o.path||""}:${o.message}`;return r.has(t)?!1:(r.add(t),!0)})}function H(e){var o,t;const r=e.diagnostics.filter(i=>i.severity==="error");return{intentId:(o=e.intent)==null?void 0:o.id,status:r.length?"failed":"answered",resultShape:(t=e.intent)==null?void 0:t.kind,intent:e.intent,validation:e.validation,coverage:{answeredObligations:r.length?[]:["query_spec_validation"],missingObligations:r.length?["query_spec_validation"]:[],warnings:e.validation.warnings},missingFields:r.filter(i=>i.code==="missing_field").flatMap(i=>{var a;return(a=i.field)!=null&&a.name?[i.field.name]:[]}),warnings:e.diagnostics.filter(i=>i.severity==="warning").map(i=>i.message),metadata:{validationKind:"data_app_sdk_query_spec"}}}function xe(e,r){return r.id||K(e.spec)}function K(e){if(!e||typeof e!="object"||!("id"in e))return;const r=e.id;return typeof r=="string"&&r.trim()?r:void 0}exports.fieldWithSelectedProjectionRole=p;exports.findMatchingRelatedProjectionField=f;exports.isAllowedRelatedProjectionRole=j;exports.matrixAxisFieldsForPolicy=S;exports.normalizeSemaphorAnalysisQueryOptions=D;exports.normalizeSemaphorFieldRole=b;exports.relatedProjectionFieldCandidatesForIntent=W;exports.validateSemaphorDataAppQuerySpecs=ne;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../chunks/validators-DcshgK7w.cjs");require("../chunks/analyze-result-contract-OgPk-zGu.cjs");require("../value-format-preferences/index.cjs");const Q=require("../chunks/report-runtime-context-RFiWq4wK.cjs"),h=require("../data-app-sdk-adapters/index.cjs");function E({intent:e,field:r,catalogField:o,relativePath:t}){const i=J({intent:e,field:r,relativePath:t});if(!i||i.allowedRelatedRoles.length===0)return!1;const a=p(r,i.selectedField),s=b(o),n=m(a);return j(s,i.allowedRelatedRoles)?n===s:!1}function W(e){return e.kind==="records"?G(e):e.kind==="metric"?X(e):Y(e)}function b(e){const r=c.normalizeAnalyticsCatalogName(e.role);if(r==="measure")return"measure";if(r==="id")return"id";const o=c.normalizeAnalyticsCatalogDataType(e.dataType);if(r==="date"||o==="date"||o==="datetime")return"date";if(r==="dimension")return"dimension"}function j(e,r){return!!(e&&r.includes(e))}function p(e,r){const o=m(e);if(o)return e.role===o?e:{...e,role:o};const t=r?m(r):void 0;return t?{...e,role:t}:e}function f(e,r){return e.find(o=>T(o,r))}function S(e){return[...e.rows.map(r=>r.field),...(e.columns||[]).map(r=>r.field)]}function J({intent:e,field:r,relativePath:o}){if(e.kind==="records")return U(e,r,o);if(e.kind==="metric")return L(e,r,o);if(e.kind==="matrix")return V(e,r,o)}function U(e,r,o){if(o.startsWith("spec.fields."))return{allowedRelatedRoles:["dimension","date","id"]};if(o==="spec.dateField"&&!e.timeWindow)return{allowedRelatedRoles:["date"]};if(o==="spec.orderBy.field"){const t=f(M(e),r);return{selectedField:t,allowedRelatedRoles:t?R(t):[]}}}function L(e,r,o){if(o.startsWith("spec.dimensions."))return{allowedRelatedRoles:["dimension"]};if(o==="spec.orderBy.field"){const t=f(e.dimensions||[],r);return{selectedField:t,allowedRelatedRoles:t?["dimension"]:[]}}}function V(e,r,o){if(re(o))return{allowedRelatedRoles:["dimension","date"]};if(oe(o)){const t=f(S(e),r);return{selectedField:t,allowedRelatedRoles:q(t)}}}function G(e){var t,i;const r=M(e),o=(t=e.orderBy)!=null&&t.field?f(r,e.orderBy.field):void 0;return _([...r.map(a=>l(a,R(a))),...(i=e.orderBy)!=null&&i.field?[l(p(e.orderBy.field,o),o?R(o):[],{unsupportedRelatedRoleMessage:"Joined records projections support related sort fields only when the same related field is included in spec.fields.",recommendedNextStep:"Add the related sort field to spec.fields, or keep orderBy fields on the base source."})]:[]])}function X(e){var o,t;const r=(o=e.orderBy)!=null&&o.field?f(e.dimensions||[],e.orderBy.field):void 0;return _([...e.measures.map(i=>l(i,[])),...e.primaryMeasure?[l(e.primaryMeasure,[])]:[],...(e.dimensions||[]).map(i=>l(i,["dimension"])),...e.dateField?[l({...e.dateField,role:"date"},[])]:[],...(t=e.orderBy)!=null&&t.field?[l(p(e.orderBy.field,r),r?["dimension"]:[],{unsupportedRelatedRoleMessage:"Joined metric projections support related orderBy fields only when the same related field is declared in spec.dimensions.",recommendedNextStep:"Add the related field as a metric dimension when it should participate in the grouped result, or keep orderBy fields on the base source."})]:[]])}function Y(e){const r=[...e.rows,...e.columns||[]];return _([...r.map(o=>l(o.field,q(o.field))),...r.flatMap(o=>{var a;if(((a=o.sortBy)==null?void 0:a.by.kind)!=="field")return[];const t=o.sortBy.by.field,i=f(S(e),t);return[l(p(t,i),q(i),{unsupportedRelatedRoleMessage:"Joined matrix projections support related axis sort fields only when the same related field is used as a row/column axis.",recommendedNextStep:"Use a related field as a row or column axis, or keep axis sort fields on the base source."})]}),...e.values.map(o=>l(o.field,[],{unsupportedRelatedRoleMessage:"Joined matrix projections support related row/column dimensions or dates only. Related value fields are not supported in this phase.",recommendedNextStep:"Keep matrix values on the base source, or use governed SQL for unsupported aggregate-safe joined values."})),...(e.sort||[]).flatMap(o=>{if(o.by.kind!=="field")return[];const t=o.by.field,i=f(S(e),t);return[l(p(t,i),q(i),{unsupportedRelatedRoleMessage:"Joined matrix projections support related top-level sort fields only when the same related field is used as a row/column axis.",recommendedNextStep:"Use a related field as a row or column axis, or keep matrix sort fields on the base source."})]})])}function R(e){const r=e?m(e):void 0;return r==="dimension"?["dimension"]:r==="date"?["date"]:r==="id"?["id"]:["dimension","date","id"]}function q(e){const r=e?m(e):void 0;return r==="date"?["date"]:r==="dimension"?["dimension"]:[]}function l(e,r,o={}){return{field:p(e),allowedRelatedRoles:r,...o}}function _(e){const r=[];return e.forEach(o=>{r.some(t=>Z(t,o))||r.push(o)}),r}function M(e){const r=[...e.fields];return e.dateField&&!r.some(o=>B(o,e.dateField))&&r.push({...e.dateField,role:"date"}),r}function Z(e,r){return T(e.field,r.field)&&e.allowedRelatedRoles.join("|")===r.allowedRelatedRoles.join("|")&&(e.unsupportedRelatedRoleMessage||"")===(r.unsupportedRelatedRoleMessage||"")&&(e.recommendedNextStep||"")===(r.recommendedNextStep||"")}function B(e,r){return c.semaphorFieldRefsMatch(e,r)}function T(e,r){return B(e,r)&&ee(m(e),m(r))}function ee(e,r){return!!(e&&(!r||e===r))}function m(e){return b(e)}function re(e){const r=e.split(".");return r.length===4&&r[0]==="spec"&&(r[1]==="rows"||r[1]==="columns")&&x(r[2])&&r[3]==="field"}function oe(e){const r=e.split(".");return r.length===6&&r[0]==="spec"&&(r[1]==="rows"||r[1]==="columns")&&x(r[2])&&r[3]==="sortBy"&&r[4]==="by"&&r[5]==="field"||r.length===5&&r[0]==="spec"&&r[1]==="sort"&&x(r[2])&&r[3]==="by"&&r[4]==="field"}function x(e){return e===void 0||e.trim()===""?!1:Number.isInteger(Number(e))&&Number(e)>=0}function te({intent:e,field:r,relativePath:o,baseCatalog:t,fieldCatalogs:i}){const a=v(r,e.source),s=c.semaphorSourcesReferToSameDataset(a,e.source);if(!s&&!ae(e.source,a))return{ok:!1,code:"invalid_source_ref",message:`Field "${r.name}" references a related Semaphor source outside the query's semantic domain.`,pathSuffix:".source",source:a};const n=s?t:I(i,a);if(!n)return{ok:!1,code:"invalid_source_ref",message:`Field "${r.name}" references a Semaphor source that is not present in the visible field catalog.`,pathSuffix:".source",source:a};const d=F(n,r,e.source);return d?!s&&!ie({intent:e,field:r,catalogField:d,relativePath:o})?{ok:!1,code:"unsupported_joined_projection",message:`Field "${r.name}" references a related Semaphor source, but this query kind does not support joined projections for that field yet.`,pathSuffix:".source",source:a}:{ok:!0,source:a,catalogField:d,usesBaseSource:s}:{ok:!1,code:"missing_field",message:`Field "${r.name}" is not visible on the selected Semaphor source.`,source:a}}function ie({intent:e,field:r,catalogField:o,relativePath:t}){return E({intent:e,field:r,catalogField:o,relativePath:t})}function ae(e,r){return e.kind==="semantic"&&r.kind==="semantic"&&e.domainId===r.domainId}function I(e,r){return e.find(o=>$(o,r))}function F(e,r,o){const t=v(r,o);if($(e,t))return e.fields.find(i=>se(i,r)&&$(e,v(i,e.source)))}function w(e){return c.normalizeAnalyticsCatalogName(e)}function v(e,r){return e.source||r}function $(e,r){return[e.source,...e.sourceAliases||[]].some(o=>c.semaphorSourcesReferToSameDataset(o,r))}function se(e,r){return!!(e.name&&r.name&&e.name===r.name)}function D(e,r={}){const o=r.pathPrefix||"analysisOptions";if(e===void 0)return{ok:!0};if(!e||typeof e!="object"||Array.isArray(e))return u(o,"Data App analysis options must be an object.");const t=e,i={};if(t.chartTitle!==void 0){if(typeof t.chartTitle!="string")return u(`${o}.chartTitle`,'Data App analysis option "chartTitle" must be a string.');i.chartTitle=t.chartTitle}if(t.chartType!==void 0){if(typeof t.chartType!="string")return u(`${o}.chartType`,'Data App analysis option "chartType" must be a string.');i.chartType=t.chartType}if(t.driverMode!==void 0){if(!le(t.driverMode))return u(`${o}.driverMode`,'Data App analysis option "driverMode" must be absolute_delta, largest_negative, largest_positive, positive_and_negative, or all.');i.driverMode=t.driverMode}if(t.includePopulation!==void 0){if(typeof t.includePopulation!="boolean")return u(`${o}.includePopulation`,'Data App analysis option "includePopulation" must be a boolean.');i.includePopulation=t.includePopulation}if(t.calendarContext!==void 0){const a=ce(t.calendarContext,{pathPrefix:`${o}.calendarContext`,validateTimezone:r.validateTimezone});if(!a.ok)return a;i.calendarContext=a.calendarContext}return{ok:!0,analysisOptions:i}}function ne(e){const r=e.queries.map((i,a)=>de(i,a,{fieldCatalogs:e.fieldCatalogs||[],requireFieldCatalog:!!e.requireFieldCatalog,validateTimezone:e.validateTimezone})),o=r.flatMap(i=>i.diagnostics),t=r.map(i=>i.executionResult);return{ok:o.every(i=>i.severity!=="error"),diagnostics:o,queries:r,intents:r.flatMap(i=>i.intent?[i.intent]:[]),executionResults:t}}function de(e,r,o){const t=`queries.${r}`;try{const i=ue(e),a=xe(e,i),s=c.validateSemaphorAnalyticsIntent(i),n=[...Se({querySpec:e,queryId:a,intent:i,pathPrefix:t}),...s.errors.map(g=>C(g,{queryHook:e.queryHook,queryId:a,pathPrefix:t,severity:"error",intent:i})),...s.warnings.map(g=>C(g,{queryHook:e.queryHook,queryId:a,pathPrefix:t,severity:"warning",intent:i})),...pe({querySpec:e,queryId:a,intent:i,pathPrefix:t,fieldCatalogs:o.fieldCatalogs,requireFieldCatalog:o.requireFieldCatalog}),...qe({querySpec:e,queryId:a,intent:i,pathPrefix:t,validateTimezone:o.validateTimezone})],d=Re(s,n);return{queryHook:e.queryHook,queryId:a,intent:i,diagnostics:n,executionResult:H({intent:i,validation:d,diagnostics:n})}}catch(i){const a={severity:"error",code:"invalid_query_spec",message:i instanceof Error?i.message:String(i),path:t,queryHook:e.queryHook,queryId:K(e.spec)},s=O([a]);return{queryHook:e.queryHook,queryId:a.queryId,diagnostics:[a],executionResult:H({validation:s,diagnostics:[a]})}}}function u(e,r){return{ok:!1,issues:[{code:"invalid_analysis_option",message:r,path:e}]}}function z(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function le(e){return e==="absolute_delta"||e==="largest_negative"||e==="largest_positive"||e==="positive_and_negative"||e==="all"}function ce(e,r){if(!e||typeof e!="object"||Array.isArray(e))return u(r.pathPrefix,'Data App analysis option "calendarContext" must be an object.');const o=e,t=o.tz;let i=t;if(typeof t=="string"&&r.validateTimezone&&(i=r.validateTimezone(t)),i===null)return u(`${r.pathPrefix}.tz`,'Data App analysis option "calendarContext.tz" must be a valid timezone string.');const a=Q.parseCalendarContext({...o,tz:i});if(!a.ok){const s=a.issues[0];return u(s!=null&&s.path?`${r.pathPrefix}.${s.path}`:r.pathPrefix,`Data App analysis option "calendarContext" is invalid: ${(s==null?void 0:s.message)??"invalid value"}.`)}return{ok:!0,calendarContext:a.value}}function ue(e){return fe(e.spec)}function fe(e){if(!z(e))throw new Error("useSemaphorQuery spec must be an object.");if(e.queryKind==="metric")return h.toSemaphorMetricIntent(e);if(e.queryKind==="analysis")return h.toSemaphorAnalysisIntent(e);if(e.queryKind==="records")return h.toSemaphorRecordsIntent(e);if(e.queryKind==="sql")return h.toSemaphorSqlIntent(e);if(e.queryKind==="matrix")return h.toSemaphorMatrixIntent(e);if(e.queryKind==="inputOptions")return h.toSemaphorInputOptionsIntent(e);throw new Error("useSemaphorQuery spec.queryKind must be metric, analysis, records, inputOptions, sql, or matrix.")}function pe(e){if(e.intent.kind==="sql")return[];if(e.fieldCatalogs.length===0&&!e.requireFieldCatalog)return[];const r=I(e.fieldCatalogs,e.intent.source);if(!r)return[{severity:"error",code:"invalid_source_ref",message:`Source ref for ${e.querySpec.queryHook} does not match a visible Semaphor source.`,path:`${e.pathPrefix}.spec.source`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source}];const o=ye({...e,catalog:r}),t={...r,fields:[...r.fields,...Ie(e.intent,r,e.intent.source)]};return[...o,...me({...e,fieldCatalogs:e.fieldCatalogs}),...he({...e,catalog:t,fieldCatalogs:e.fieldCatalogs}),...ge({...e,catalog:t,fieldCatalogs:e.fieldCatalogs})]}function me(e){var o;if(e.intent.kind!=="inputOptions"||((o=e.intent.population)==null?void 0:o.kind)!=="related_population")return[];const r=e.intent.population.baseSource;return I(e.fieldCatalogs,r)?[]:[{severity:"error",code:"invalid_source_ref",message:"Input options related population baseSource does not match a visible Semaphor source.",path:`${e.pathPrefix}.spec.population.baseSource`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:r}]}function ye(e){const r=N(e.intent);if(r.length===0)return[];const o=[],t=new Set;return r.forEach((i,a)=>{const s=`${e.pathPrefix}.spec.derivedFields.${a}`,n=w(i.name);n&&(t.has(n)&&o.push({severity:"error",code:"duplicate_derived_field",message:`Derived field "${i.name}" is declared more than once.`,path:`${s}.name`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source}),t.add(n),e.catalog.fields.some(d=>w(d.name)===n)&&o.push({severity:"error",code:"derived_field_name_collision",message:`Derived field "${i.name}" conflicts with a field already visible on the selected Semaphor source.`,path:`${s}.name`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source})),Object.entries(i.inputs||{}).forEach(([d,g])=>{const y=ke(g);if(!y)return;const k=v(y,e.intent.source);if(!c.semaphorSourcesReferToSameDataset(k,e.intent.source)){o.push({severity:"error",code:"unsupported_derived_field_source",message:`Derived field "${i.name}" input "${d}" references a different Semaphor source. App-local derived fields must use fields from the query source.`,path:`${s}.inputs.${d}`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:k,field:y});return}F(e.catalog,y,e.intent.source)||o.push({severity:"error",code:"missing_field",message:`Derived field "${i.name}" input "${d}" references field "${y.name}", which is not visible on the selected Semaphor source.`,path:`${s}.inputs.${d}`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:k,field:y})})}),o}function he(e){return Fe(e.intent).flatMap(({field:r,path:o})=>{const t=te({intent:e.intent,field:r,relativePath:o,baseCatalog:e.catalog,fieldCatalogs:e.fieldCatalogs});return t.ok?[]:[{severity:"error",code:t.code,message:t.message,path:`${e.pathPrefix}.${o}${t.pathSuffix||""}`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:t.source,field:r}]})}function ge(e){return("inputs"in e.intent?e.intent.inputs||[]:[]).flatMap((o,t)=>{if(!o.field)return[];const i=v(o.field,e.intent.source);if(!c.semaphorSourcesReferToSameDataset(i,e.intent.source)){if(ve(e.intent,i)){const a=I(e.fieldCatalogs,i);return a?F(a,o.field,i)?[]:[{severity:"error",code:"missing_field",message:`Input "${o.inputId}" references field "${o.field.name}", which is not visible on the selected Semaphor source.`,path:`${e.pathPrefix}.spec.inputs.${t}.field`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]:[{severity:"error",code:"invalid_source_ref",message:`Input "${o.inputId}" references a Semaphor source that is not present in the visible field catalog.`,path:`${e.pathPrefix}.spec.inputs.${t}.field.source`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]}return[{severity:"error",code:"unsupported_input_filter_composition",message:`Input "${o.inputId}" filters a different Semaphor source than the query, and no relationship-aware semantic validation path is available for this query kind.`,path:`${e.pathPrefix}.spec.inputs.${t}.field`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]}return F(e.catalog,o.field,e.intent.source)?[]:[{severity:"error",code:"missing_field",message:`Input "${o.inputId}" references field "${o.field.name}", which is not visible on the selected Semaphor source.`,path:`${e.pathPrefix}.spec.inputs.${t}.field`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:i,field:o.field}]})}function ve(e,r){return e.source.kind==="semantic"&&r.kind==="semantic"&&r.domainId===e.source.domainId}function qe(e){if(e.querySpec.spec.queryKind!=="analysis")return[];const r=D(e.querySpec.spec,{pathPrefix:`${e.pathPrefix}.spec`,validateTimezone:e.validateTimezone});return r.ok?[]:r.issues.map(o=>({severity:"error",code:o.code,message:o.message,path:o.path,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id,source:e.intent.source}))}function Se(e){return e.querySpec.spec.queryKind!=="sql"?[]:z(e.querySpec.spec)?Object.prototype.hasOwnProperty.call(e.querySpec.spec,"parameters")?[{severity:"error",code:"deprecated_sql_parameters",message:"semaphor.sql uses defaultParameters for static SQL param(...) fallback values. The legacy parameters field is not supported.",path:`${e.pathPrefix}.spec.parameters`,queryHook:e.querySpec.queryHook,queryId:e.queryId,intentId:e.intent.id}]:[]:[]}function Fe(e){return e.kind==="metric"?[...e.measures.map((r,o)=>({field:r,path:`spec.measures.${o}`})),...e.primaryMeasure?[{field:e.primaryMeasure,path:"spec.primaryMeasure"}]:[],...e.dateField?[{field:e.dateField,path:"spec.dateField"}]:[],...(e.dimensions||[]).map((r,o)=>({field:r,path:`spec.dimensions.${o}`})),...e.orderBy?[{field:e.orderBy.field,path:"spec.orderBy.field"}]:[],...(e.filters||[]).map((r,o)=>({field:r.field,path:`spec.filters.${o}.field`}))]:e.kind==="records"?[...e.fields.map((r,o)=>({field:r,path:`spec.fields.${o}`})),...e.dateField?[{field:e.dateField,path:"spec.dateField"}]:[],...e.orderBy?[{field:e.orderBy.field,path:"spec.orderBy.field"}]:[],...(e.filters||[]).map((r,o)=>({field:r.field,path:`spec.filters.${o}.field`}))]:e.kind==="inputOptions"?[{field:e.labelField,path:"spec.labelField"},{field:e.valueField,path:"spec.valueField"},...e.searchField?[{field:e.searchField,path:"spec.searchField"}]:[],...(e.disambiguationFields||[]).map((r,o)=>({field:r,path:`spec.disambiguationFields.${o}`}))]:e.kind==="matrix"?[...e.rows.map((r,o)=>({field:r.field,path:`spec.rows.${o}.field`})),...e.rows.flatMap((r,o)=>{var t;return((t=r.sortBy)==null?void 0:t.by.kind)==="field"?[{field:r.sortBy.by.field,path:`spec.rows.${o}.sortBy.by.field`}]:[]}),...(e.columns||[]).map((r,o)=>({field:r.field,path:`spec.columns.${o}.field`})),...(e.columns||[]).flatMap((r,o)=>{var t;return((t=r.sortBy)==null?void 0:t.by.kind)==="field"?[{field:r.sortBy.by.field,path:`spec.columns.${o}.sortBy.by.field`}]:[]}),...e.values.map((r,o)=>({field:r.field,path:`spec.values.${o}.field`})),...(e.sort||[]).flatMap((r,o)=>r.by.kind==="field"?[{field:r.by.field,path:`spec.sort.${o}.by.field`}]:[]),...(e.filters||[]).map((r,o)=>({field:r.field,path:`spec.filters.${o}.field`}))]:[]}function N(e){return!("derivedFields"in e)||!Array.isArray(e.derivedFields)?[]:e.derivedFields}function Ie(e,r,o){return N(e).map(t=>({name:t.name,label:t.label,role:t.resultRole,dataType:t.dataType,source:r.source||o,...t.defaultAggregate?{aggregate:t.defaultAggregate}:{}}))}function ke(e){if(!(!e||typeof e!="object"))return e.field}function C(e,r){return{severity:r.severity,code:e.code||"invalid_analytics_intent",message:e.message,path:e.path?`${r.pathPrefix}.spec.${e.path}`:r.pathPrefix,queryHook:r.queryHook,queryId:r.queryId,intentId:r.intent.id,source:r.intent.source}}function Re(e,r){const o=O(r);return{ok:o.ok&&e.ok,errors:A([...e.errors,...o.errors]),warnings:A([...e.warnings,...o.warnings]),repairHints:[...e.repairHints,...o.repairHints]}}function O(e){const r=e.filter(t=>t.severity==="error").map(P),o=e.filter(t=>t.severity==="warning").map(P);return{ok:r.length===0,errors:r,warnings:o,repairHints:r.map(t=>{var i,a;return{code:t.code,message:t.message,fieldRole:t.fieldRole,invalidField:(i=t.repairHint)==null?void 0:i.invalidField,recommendedNextStep:((a=t.repairHint)==null?void 0:a.recommendedNextStep)||"Update the Data App SDK query spec to use visible Semaphor source and field refs."}})}}function P(e){var r;return{code:e.code,message:e.message,path:e.path,fieldRole:e.code==="invalid_source_ref"?"source":void 0,repairHint:{code:e.code,message:e.message,invalidField:(r=e.field)==null?void 0:r.name,fieldRole:e.code==="invalid_source_ref"?"source":void 0,recommendedNextStep:e.code==="unsupported_input_filter_composition"?"Use an input field from the same Semaphor source as the query, or split the query into separate source-scoped queries.":"Update the query spec to use a visible Semaphor source and field ref."}}}function A(e){const r=new Set;return e.filter(o=>{const t=`${o.code}:${o.path||""}:${o.message}`;return r.has(t)?!1:(r.add(t),!0)})}function H(e){var o,t;const r=e.diagnostics.filter(i=>i.severity==="error");return{intentId:(o=e.intent)==null?void 0:o.id,status:r.length?"failed":"answered",resultShape:(t=e.intent)==null?void 0:t.kind,intent:e.intent,validation:e.validation,coverage:{answeredObligations:r.length?[]:["query_spec_validation"],missingObligations:r.length?["query_spec_validation"]:[],warnings:e.validation.warnings},missingFields:r.filter(i=>i.code==="missing_field").flatMap(i=>{var a;return(a=i.field)!=null&&a.name?[i.field.name]:[]}),warnings:e.diagnostics.filter(i=>i.severity==="warning").map(i=>i.message),metadata:{validationKind:"data_app_sdk_query_spec"}}}function xe(e,r){return r.id||K(e.spec)}function K(e){if(!e||typeof e!="object"||!("id"in e))return;const r=e.id;return typeof r=="string"&&r.trim()?r:void 0}exports.fieldWithSelectedProjectionRole=p;exports.findMatchingRelatedProjectionField=f;exports.isAllowedRelatedProjectionRole=j;exports.matrixAxisFieldsForPolicy=S;exports.normalizeSemaphorAnalysisQueryOptions=D;exports.normalizeSemaphorFieldRole=b;exports.relatedProjectionFieldCandidatesForIntent=W;exports.validateSemaphorDataAppQuerySpecs=ne;
@@ -1,7 +1,7 @@
1
- import { B as H, E as O, s as K, ah as q, x as Q } from "../chunks/validators-DhTaCK1O.js";
2
- import "../chunks/analyze-result-contract-kaCNxjA7.js";
1
+ import { B as H, E as O, s as K, ai as q, x as Q } from "../chunks/validators-B5t1s8oh.js";
2
+ import "../chunks/analyze-result-contract-B3agc2XU.js";
3
3
  import "../value-format-preferences/index.js";
4
- import { p as E } from "../chunks/report-runtime-context-CcXUjpb-.js";
4
+ import { p as E } from "../chunks/report-runtime-context-DnNbpkGo.js";
5
5
  import { toSemaphorMetricIntent as J, toSemaphorAnalysisIntent as U, toSemaphorRecordsIntent as W, toSemaphorSqlIntent as L, toSemaphorMatrixIntent as V, toSemaphorInputOptionsIntent as G } from "../data-app-sdk-adapters/index.js";
6
6
  function X({
7
7
  intent: e,
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../chunks/format-types-PSZZ7hG8.cjs"),n=require("../chunks/pivot-result-lifecycle-CEfU43GZ.cjs"),s=require("../chunks/pivot-header-presentation-DyV0iOZ_.cjs"),f=require("../chunks/validators-DO-YuzgO.cjs"),c=require("../chunks/temporal-bucket-BDRcWdVv.cjs"),p=require("../chunks/pivot-result-identity-gsOwOjHi.cjs"),v=require("../chunks/raw-temporal-contract-UdblxoVB.cjs");function V(r,e,t,o){const a=r instanceof Date?r.toISOString():String(r),i=(o==null?void 0:o.browserTimezone)||t,l=(o==null?void 0:o.isSqlCard)??!1;if(e!=null&&e.useRelativeTime)return s.formatRelativeTime(a,(e==null?void 0:e.sourceTimezone)||"auto");const m=e!=null&&e.useCustomFormat&&(e!=null&&e.customFormat)?e.customFormat:(e==null?void 0:e.format)||"MM/dd/yyyy";return s.formatDate(a,m,e!=null&&e.timezone&&(e==null?void 0:e.timezone)!=="auto"?e.timezone:l?i:t,(e==null?void 0:e.sourceTimezone)||"auto")}function y(r,e,t){if(r==null)return"";if(!t.useFormattedValues||!e)return String(r);switch(e.type){case"number":return typeof r=="number"?n.formatNumberWithColumnSettings(r,e.numberFormat,t.locale):String(r);case"date":return V(r,e.dateFormat,t.timezone,{browserTimezone:t.browserTimezone,isSqlCard:t.isSqlCard});case"progress":return typeof r=="number"?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function h(r,e){return e.visibleColumns.map(t=>{const o=r[t],a=e.columnSettings[t];return y(o,a,{useFormattedValues:e.useFormattedValues,timezone:e.timezone,locale:e.locale})})}function S(r,e){const t=[];e.includeHeaders&&t.push(s.arrayToCSVRow(e.visibleColumns,e.delimiter));for(const o of r){const a=h(o,e);t.push(a.map(i=>s.escapeCSVValue(i,e.delimiter)).join(e.delimiter))}return t}function M(r,e,t=`
2
- `){return S(r,e).join(t)}function d(r,e,t){for(const o of r){if(o.level<t){e[o.level].push(o.name);for(let a=1;a<o.colspan;a++)e[o.level].push("")}o.children?d(o.children,e,t):o.columnKey&&e[t].push(o.name)}}function P(r){const e=r.pivotByColumns.length,t=r.groupByColumns.length,o=Array.from({length:e+1},()=>[]);for(let a=0;a<e;a++)o[a].push(...Array(t).fill(""));if(o[e].push(...r.groupByColumns.map(a=>a.label||a.name)),d(r.columnHeadersTree,o,e),r.showRowTotals){for(let a=0;a<e;a++)o[a].push("");o[e].push("Total")}return o}function N(r,e,t){if(r==null)return"";if(!t.useFormattedValues)return String(r);const o=t.columnSettings[e];return typeof r=="number"&&(o==null?void 0:o.type)==="number"?n.formatNumberWithColumnSettings(r,o.numberFormat,t.locale):typeof r=="number"?r.toLocaleString(t.locale):String(r)}function A(r,e,t){const o=[];r.fieldValues.forEach((i,l)=>{r.isSubtotal&&l===0?o.push(`${i} Total`):r.isSubtotal?o.push(""):o.push(String(i??""))});let a=0;return e.columnHeaders.forEach(i=>{var u;const l=(u=r.cells[i])==null?void 0:u.value,m=N(l,i,t);o.push(m),e.showRowTotals&&typeof l=="number"&&(a+=l)}),e.showRowTotals&&o.push(a.toLocaleString(t.locale)),o}function k(r,e,t){const o=[];if(t.includeHeaders){const a=P(e);for(const i of a)o.push(s.arrayToCSVRow(i,t.delimiter))}for(const a of r){const i=A(a,e,t);o.push(i.map(l=>s.escapeCSVValue(l,t.delimiter)).join(t.delimiter))}return o}function R(r){if(r===null||typeof r!="object"||Array.isArray(r))return!1;const e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}function C(r,e,t){const o=new Set(e),a=Object.keys(r).find(i=>!o.has(i));if(a)throw new Error(`${t} contains unknown property "${a}"`)}function B(r,e="tableTotalsRequest"){if(!R(r))throw new Error(`${e} must be an object`);if(C(r,["source","columns"],e),r.source!=="documentFlatTable")throw new Error(`${e}.source must be documentFlatTable`);if(!Array.isArray(r.columns)||r.columns.length===0)throw new Error(`${e}.columns must be a non-empty array`);let t=0;const o=r.columns.map((l,m)=>{const u=`${e}.columns.${m}`;if(!R(l))throw new Error(`${u} must be an object`);C(l,["fieldId","role","behavior","metricAlias","label"],u);const w=typeof l.fieldId=="string"?l.fieldId.trim():"";if(!w)throw new Error(`${u}.fieldId must be a non-empty string`);if(l.role!=="detail"&&l.role!=="groupby"&&l.role!=="metric")throw new Error(`${u}.role is invalid`);const T=l.role;if(l.behavior!=="sum"&&l.behavior!=="avg"&&l.behavior!=="count"&&l.behavior!=="label")throw new Error(`${u}.behavior is invalid`);const E=l.behavior,b=typeof l.metricAlias=="string"?l.metricAlias.trim():void 0;if(l.metricAlias!==void 0&&!b)throw new Error(`${u}.metricAlias must be a non-empty string`);if(b&&T!=="metric")throw new Error(`${u}.metricAlias requires metric role`);if(E==="label"){if(t+=1,T==="metric")throw new Error(`${u}.behavior label requires a non-metric role`)}else if(T!=="metric")throw new Error(`${u}.${E} requires metric role`);if(l.label!==void 0&&typeof l.label!="string")throw new Error(`${u}.label must be a string`);return{fieldId:w,role:T,behavior:E,...b?{metricAlias:b}:{},...l.label!==void 0?{label:l.label}:{}}}),a=new Map,i=new Set;for(const l of o){if(l.metricAlias){if(i.has(l.metricAlias))throw new Error(`${e}.columns duplicates metricAlias "${l.metricAlias}"`);i.add(l.metricAlias)}const m=a.get(l.fieldId)??[];m.push(l),a.set(l.fieldId,m)}for(const[l,m]of a)if(m.length!==1){for(const u of m)if(u.role!=="metric"||!u.metricAlias)throw new Error(`${e}.columns duplicates fieldId "${l}" without distinct metricAlias values`)}if(t>1)throw new Error(`${e}.columns may contain at most one label`);return{source:"documentFlatTable",columns:o}}function $(r,e="tableTotalsByColumnId"){if(!R(r))throw new Error(`${e} must be an object`);const t={};for(const[o,a]of Object.entries(r)){if(!o.trim())throw new Error(`${e} contains an empty column id`);if(a!==null&&typeof a!="string"&&(typeof a!="number"||!Number.isFinite(a)))throw new Error(`${e}.${o} must be a string, finite number, or null`);t[o]=a}if(Object.keys(t).length===0)throw new Error(`${e} must not be empty`);return t}function _(r){if(typeof r=="number")return Number.isFinite(r)?r:null;if(!r.trim())return null;const e=Number(r);return Number.isFinite(e)?e:null}function I(r){const e=r.visibleColumns.map(t=>{const a=Object.prototype.hasOwnProperty.call(r.totalsByColumnId,t)?r.totalsByColumnId[t]:t===r.labelColumnKey?"Total":null;if(a===null)return"";if(!r.useFormattedValues)return String(a);const i=n.findResolvedNumericFormat({snapshot:r.snapshot,scope:r.scope,target:{kind:"column",columnKey:t}}),l=i?_(a):null;return i&&l!==null?n.formatNumericCanonical(l,i):String(a)});return`${s.arrayToCSVRow(e,r.delimiter)}
3
- `}exports.isNumericCanonicalFormat=g.isNumericCanonicalFormat;exports.MissingResolvedRawTemporalFormatError=n.MissingResolvedRawTemporalFormatError;exports.PivotResultLifecycleError=n.PivotResultLifecycleError;exports.PresentationExecutionSnapshotError=n.PresentationExecutionSnapshotError;exports.RawTemporalFormatContractError=n.RawTemporalFormatContractError;exports.assertRawTemporalChunkClassificationAgreement=n.assertRawTemporalChunkClassificationAgreement;exports.classifyDeclaredSqlTemporalColumn=n.classifyDeclaredSqlTemporalColumn;exports.createCanonicalPivotResultTransport=n.createCanonicalPivotResultTransport;exports.createPresentationExecutionSnapshot=n.createPresentationExecutionSnapshot;exports.createRawTemporalChunkClassificationEvidence=n.createRawTemporalChunkClassificationEvidence;exports.deriveMetricInstanceAliasExpectations=n.deriveMetricInstanceAliasExpectations;exports.derivePivotResultContractExpectations=n.derivePivotResultContractExpectations;exports.findResolvedNumericFormat=n.findResolvedNumericFormat;exports.findResolvedRawTemporalFormat=n.findResolvedRawTemporalFormat;exports.findResolvedTemporalBucketFormat=n.findResolvedTemporalBucketFormat;exports.formatCurrency=n.formatCurrency;exports.formatNumber=n.formatNumber;exports.formatNumberCustom=n.formatNumberCustom;exports.formatNumberWithColumnSettings=n.formatNumberWithColumnSettings;exports.formatNumericCanonical=n.formatNumericCanonical;exports.formatPercent=n.formatPercent;exports.formatRawTemporalValue=n.formatRawTemporalValue;exports.formatScientific=n.formatScientific;exports.parseCanonicalPivotResultTransport=n.parseCanonicalPivotResultTransport;exports.parseNumericCanonicalFormat=n.parseNumericCanonicalFormat;exports.parsePresentationExecutionSnapshot=n.parsePresentationExecutionSnapshot;exports.parsePresentationScope=n.parsePresentationScope;exports.parseRawTemporalChunkClassificationEvidence=n.parseRawTemporalChunkClassificationEvidence;exports.parseResolvedNumericCanonicalFormat=n.parseResolvedNumericCanonicalFormat;exports.parseResolvedPresentationEntries=n.parseResolvedPresentationEntries;exports.parseResolvedRawTemporalFormat=n.parseResolvedRawTemporalFormat;exports.prepareRawTemporalFormatter=n.prepareRawTemporalFormatter;exports.resolveCurrencyFractionDigits=n.resolveCurrencyFractionDigits;exports.resolveNumericPresentation=n.resolveNumericPresentation;exports.resolveRawTemporalFormat=n.resolveRawTemporalFormat;exports.validateCardExportNumericPresentationSnapshot=n.validateCardExportNumericPresentationSnapshot;exports.validateCardExportPresentationSnapshot=n.validateCardExportPresentationSnapshot;exports.AGGREGATE_TOTAL_MEMBER_MARKER=s.AGGREGATE_TOTAL_MEMBER_MARKER;exports.PivotHeaderPresentationError=s.PivotHeaderPresentationError;exports.arrayToCSV=s.arrayToCSV;exports.arrayToCSVRow=s.arrayToCSVRow;exports.escapeCSVValue=s.escapeCSVValue;exports.formatAggregateGrandTotalLabel=s.formatAggregateGrandTotalLabel;exports.formatAggregateGroupCell=s.formatAggregateGroupCell;exports.formatAggregateGroupRow=s.formatAggregateGroupRow;exports.formatAggregateSubtotalLabel=s.formatAggregateSubtotalLabel;exports.formatDate=s.formatDate;exports.formatDuration=s.formatDuration;exports.formatMetricComparison=s.formatMetricComparison;exports.formatRelativeTime=s.formatRelativeTime;exports.getTimezoneAbbreviation=s.getTimezoneAbbreviation;exports.getTimezoneName=s.getTimezoneName;exports.isAggregateTotalMemberMarker=s.isAggregateTotalMemberMarker;exports.objectsToCSV=s.objectsToCSV;exports.parseWithSourceTimezone=s.parseWithSourceTimezone;exports.presentAggregateGroupRow=s.presentAggregateGroupRow;exports.presentPivotHeader=s.presentPivotHeader;exports.resolveAggregateTablePresentationContext=s.resolveAggregateTablePresentationContext;exports.resolveTimezone=s.resolveTimezone;exports.SEMAPHOR_GENERATED_COUNT_METRIC_ID=f.SEMAPHOR_GENERATED_COUNT_METRIC_ID;exports.TEMPORAL_BUCKET_PATTERN_TOKENS=f.TEMPORAL_BUCKET_PATTERN_TOKENS;exports.isTemporalBucketPreset=f.isTemporalBucketPreset;exports.resolveApplicableTemporalBucketFormat=f.resolveApplicableTemporalBucketFormat;exports.tokenizeTemporalBucketPattern=f.tokenizeTemporalBucketPattern;exports.validateTemporalBucketFormatApplicability=f.validateTemporalBucketFormatApplicability;exports.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET=c.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET;exports.TemporalBucketContractError=c.TemporalBucketContractError;exports.formatTemporalBucket=c.formatTemporalBucket;exports.parseResolvedTemporalBucketFormat=c.parseResolvedTemporalBucketFormat;exports.parseTemporalBucketValue=c.parseTemporalBucketValue;exports.resolveMetricResultAlias=c.resolveMetricResultAlias;exports.resolveTemporalBucketPresentation=c.resolveTemporalBucketPresentation;exports.PivotResultIdentityError=p.PivotResultIdentityError;exports.isPivotEmptyTupleAllowed=p.isPivotEmptyTupleAllowed;exports.isPivotSubtotalPrefix=p.isPivotSubtotalPrefix;exports.requirePivotHeaderMembers=p.requirePivotHeaderMembers;exports.requirePivotResultColumnIdentities=p.requirePivotResultColumnIdentities;exports.resolveQueryColumnKeyMapEntry=p.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=p.resolveUniqueQueryColumnKeyMapEntry;exports.parseRawTemporalValueMetadata=v.parseRawTemporalValueMetadata;exports.validateRawTemporalResultColumn=v.validateRawTemporalResultColumn;exports.buildFlatTableExportTotalsFooter=I;exports.formatCellValue=y;exports.formatPivotDataRow=A;exports.formatPivotTableForCSV=k;exports.formatRowForExport=h;exports.formatTableForCSV=S;exports.generatePivotHeaders=P;exports.generateTableCSV=M;exports.parseFlatTableExportTotalsByColumnId=$;exports.parseFlatTableExportTotalsRequest=B;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../chunks/format-types-PSZZ7hG8.cjs"),n=require("../chunks/pivot-result-lifecycle-DJgO2P0H.cjs"),s=require("../chunks/pivot-header-presentation-Cr6pU5JL.cjs"),T=require("../chunks/validators-DcshgK7w.cjs"),c=require("../chunks/temporal-bucket-9Wz9Ds6H.cjs"),p=require("../chunks/pivot-result-identity-DRUlTWUq.cjs"),v=require("../chunks/raw-temporal-contract-D8YuxTAg.cjs");function V(r,e,t,o){const a=r instanceof Date?r.toISOString():String(r),i=(o==null?void 0:o.browserTimezone)||t,l=(o==null?void 0:o.isSqlCard)??!1;if(e!=null&&e.useRelativeTime)return s.formatRelativeTime(a,(e==null?void 0:e.sourceTimezone)||"auto");const m=e!=null&&e.useCustomFormat&&(e!=null&&e.customFormat)?e.customFormat:(e==null?void 0:e.format)||"MM/dd/yyyy";return s.formatDate(a,m,e!=null&&e.timezone&&(e==null?void 0:e.timezone)!=="auto"?e.timezone:l?i:t,(e==null?void 0:e.sourceTimezone)||"auto")}function S(r,e,t){if(r==null)return"";if(!t.useFormattedValues||!e)return String(r);switch(e.type){case"number":return typeof r=="number"?n.formatNumberWithColumnSettings(r,e.numberFormat,t.locale):String(r);case"date":return V(r,e.dateFormat,t.timezone,{browserTimezone:t.browserTimezone,isSqlCard:t.isSqlCard});case"progress":return typeof r=="number"?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function y(r,e){return e.visibleColumns.map(t=>{const o=r[t],a=e.columnSettings[t];return S(o,a,{useFormattedValues:e.useFormattedValues,timezone:e.timezone,locale:e.locale})})}function h(r,e){const t=[];e.includeHeaders&&t.push(s.arrayToCSVRow(e.visibleColumns,e.delimiter));for(const o of r){const a=y(o,e);t.push(a.map(i=>s.escapeCSVValue(i,e.delimiter)).join(e.delimiter))}return t}function _(r,e,t=`
2
+ `){return h(r,e).join(t)}function d(r,e,t){for(const o of r){if(o.level<t){e[o.level].push(o.name);for(let a=1;a<o.colspan;a++)e[o.level].push("")}o.children?d(o.children,e,t):o.columnKey&&e[t].push(o.name)}}function A(r){const e=r.pivotByColumns.length,t=r.groupByColumns.length,o=Array.from({length:e+1},()=>[]);for(let a=0;a<e;a++)o[a].push(...Array(t).fill(""));if(o[e].push(...r.groupByColumns.map(a=>a.label||a.name)),d(r.columnHeadersTree,o,e),r.showRowTotals){for(let a=0;a<e;a++)o[a].push("");o[e].push("Total")}return o}function M(r,e,t){if(r==null)return"";if(!t.useFormattedValues)return String(r);const o=t.columnSettings[e];return typeof r=="number"&&(o==null?void 0:o.type)==="number"?n.formatNumberWithColumnSettings(r,o.numberFormat,t.locale):typeof r=="number"?r.toLocaleString(t.locale):String(r)}function P(r,e,t){const o=[];r.fieldValues.forEach((i,l)=>{r.isSubtotal&&l===0?o.push(`${i} Total`):r.isSubtotal?o.push(""):o.push(String(i??""))});let a=0;return e.columnHeaders.forEach(i=>{var u;const l=(u=r.cells[i])==null?void 0:u.value,m=M(l,i,t);o.push(m),e.showRowTotals&&typeof l=="number"&&(a+=l)}),e.showRowTotals&&o.push(a.toLocaleString(t.locale)),o}function k(r,e,t){const o=[];if(t.includeHeaders){const a=A(e);for(const i of a)o.push(s.arrayToCSVRow(i,t.delimiter))}for(const a of r){const i=P(a,e,t);o.push(i.map(l=>s.escapeCSVValue(l,t.delimiter)).join(t.delimiter))}return o}function R(r){if(r===null||typeof r!="object"||Array.isArray(r))return!1;const e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}function w(r,e,t){const o=new Set(e),a=Object.keys(r).find(i=>!o.has(i));if(a)throw new Error(`${t} contains unknown property "${a}"`)}function N(r,e="tableTotalsRequest"){if(!R(r))throw new Error(`${e} must be an object`);if(w(r,["source","columns"],e),r.source!=="documentFlatTable")throw new Error(`${e}.source must be documentFlatTable`);if(!Array.isArray(r.columns)||r.columns.length===0)throw new Error(`${e}.columns must be a non-empty array`);let t=0;const o=r.columns.map((l,m)=>{const u=`${e}.columns.${m}`;if(!R(l))throw new Error(`${u} must be an object`);w(l,["fieldId","role","behavior","metricAlias","label"],u);const C=typeof l.fieldId=="string"?l.fieldId.trim():"";if(!C)throw new Error(`${u}.fieldId must be a non-empty string`);if(l.role!=="detail"&&l.role!=="groupby"&&l.role!=="metric")throw new Error(`${u}.role is invalid`);const f=l.role;if(l.behavior!=="sum"&&l.behavior!=="avg"&&l.behavior!=="count"&&l.behavior!=="label")throw new Error(`${u}.behavior is invalid`);const E=l.behavior,b=typeof l.metricAlias=="string"?l.metricAlias.trim():void 0;if(l.metricAlias!==void 0&&!b)throw new Error(`${u}.metricAlias must be a non-empty string`);if(b&&f!=="metric")throw new Error(`${u}.metricAlias requires metric role`);if(E==="label"){if(t+=1,f==="metric")throw new Error(`${u}.behavior label requires a non-metric role`)}else if(f!=="metric")throw new Error(`${u}.${E} requires metric role`);if(l.label!==void 0&&typeof l.label!="string")throw new Error(`${u}.label must be a string`);return{fieldId:C,role:f,behavior:E,...b?{metricAlias:b}:{},...l.label!==void 0?{label:l.label}:{}}}),a=new Map,i=new Set;for(const l of o){if(l.metricAlias){if(i.has(l.metricAlias))throw new Error(`${e}.columns duplicates metricAlias "${l.metricAlias}"`);i.add(l.metricAlias)}const m=a.get(l.fieldId)??[];m.push(l),a.set(l.fieldId,m)}for(const[l,m]of a)if(m.length!==1){for(const u of m)if(u.role!=="metric"||!u.metricAlias)throw new Error(`${e}.columns duplicates fieldId "${l}" without distinct metricAlias values`)}if(t>1)throw new Error(`${e}.columns may contain at most one label`);return{source:"documentFlatTable",columns:o}}function B(r,e="tableTotalsByColumnId"){if(!R(r))throw new Error(`${e} must be an object`);const t={};for(const[o,a]of Object.entries(r)){if(!o.trim())throw new Error(`${e} contains an empty column id`);if(a!==null&&typeof a!="string"&&(typeof a!="number"||!Number.isFinite(a)))throw new Error(`${e}.${o} must be a string, finite number, or null`);t[o]=a}if(Object.keys(t).length===0)throw new Error(`${e} must not be empty`);return t}function O(r){if(typeof r=="number")return Number.isFinite(r)?r:null;if(!r.trim())return null;const e=Number(r);return Number.isFinite(e)?e:null}function $(r){const e=r.visibleColumns.map(t=>{const a=Object.prototype.hasOwnProperty.call(r.totalsByColumnId,t)?r.totalsByColumnId[t]:t===r.labelColumnKey?"Total":null;if(a===null)return"";if(!r.useFormattedValues)return String(a);const i=n.findResolvedNumericFormat({snapshot:r.snapshot,scope:r.scope,target:{kind:"column",columnKey:t}}),l=i?O(a):null;return i&&l!==null?n.formatNumericCanonical(l,i):String(a)});return`${s.arrayToCSVRow(e,r.delimiter)}
3
+ `}exports.isNumericCanonicalFormat=g.isNumericCanonicalFormat;exports.MissingResolvedRawTemporalFormatError=n.MissingResolvedRawTemporalFormatError;exports.PivotResultLifecycleError=n.PivotResultLifecycleError;exports.PresentationExecutionSnapshotError=n.PresentationExecutionSnapshotError;exports.RawTemporalFormatContractError=n.RawTemporalFormatContractError;exports.assertRawTemporalChunkClassificationAgreement=n.assertRawTemporalChunkClassificationAgreement;exports.classifyDeclaredSqlTemporalColumn=n.classifyDeclaredSqlTemporalColumn;exports.createCanonicalPivotResultTransport=n.createCanonicalPivotResultTransport;exports.createPresentationExecutionSnapshot=n.createPresentationExecutionSnapshot;exports.createRawTemporalChunkClassificationEvidence=n.createRawTemporalChunkClassificationEvidence;exports.deriveMetricInstanceAliasExpectations=n.deriveMetricInstanceAliasExpectations;exports.derivePivotResultContractExpectations=n.derivePivotResultContractExpectations;exports.findResolvedNumericFormat=n.findResolvedNumericFormat;exports.findResolvedRawTemporalFormat=n.findResolvedRawTemporalFormat;exports.findResolvedTemporalBucketFormat=n.findResolvedTemporalBucketFormat;exports.formatCurrency=n.formatCurrency;exports.formatNumber=n.formatNumber;exports.formatNumberCustom=n.formatNumberCustom;exports.formatNumberWithColumnSettings=n.formatNumberWithColumnSettings;exports.formatNumericCanonical=n.formatNumericCanonical;exports.formatPercent=n.formatPercent;exports.formatRawTemporalValue=n.formatRawTemporalValue;exports.formatScientific=n.formatScientific;exports.parseCanonicalPivotResultTransport=n.parseCanonicalPivotResultTransport;exports.parseNumericCanonicalFormat=n.parseNumericCanonicalFormat;exports.parsePresentationExecutionSnapshot=n.parsePresentationExecutionSnapshot;exports.parsePresentationScope=n.parsePresentationScope;exports.parseRawTemporalChunkClassificationEvidence=n.parseRawTemporalChunkClassificationEvidence;exports.parseResolvedNumericCanonicalFormat=n.parseResolvedNumericCanonicalFormat;exports.parseResolvedPresentationEntries=n.parseResolvedPresentationEntries;exports.parseResolvedRawTemporalFormat=n.parseResolvedRawTemporalFormat;exports.prepareRawTemporalFormatter=n.prepareRawTemporalFormatter;exports.resolveCurrencyFractionDigits=n.resolveCurrencyFractionDigits;exports.resolveNumericPresentation=n.resolveNumericPresentation;exports.resolveRawTemporalFormat=n.resolveRawTemporalFormat;exports.validateCardExportNumericPresentationSnapshot=n.validateCardExportNumericPresentationSnapshot;exports.validateCardExportPresentationSnapshot=n.validateCardExportPresentationSnapshot;exports.AGGREGATE_TOTAL_MEMBER_MARKER=s.AGGREGATE_TOTAL_MEMBER_MARKER;exports.DIRECT_CSV_EXPORT_MAX_ROWS=s.DIRECT_CSV_EXPORT_MAX_ROWS;exports.FULL_DATASET_CSV_EXPORT_MAX_ROWS=s.FULL_DATASET_CSV_EXPORT_MAX_ROWS;exports.PivotHeaderPresentationError=s.PivotHeaderPresentationError;exports.arrayToCSV=s.arrayToCSV;exports.arrayToCSVRow=s.arrayToCSVRow;exports.escapeCSVValue=s.escapeCSVValue;exports.formatAggregateGrandTotalLabel=s.formatAggregateGrandTotalLabel;exports.formatAggregateGroupCell=s.formatAggregateGroupCell;exports.formatAggregateGroupRow=s.formatAggregateGroupRow;exports.formatAggregateSubtotalLabel=s.formatAggregateSubtotalLabel;exports.formatDate=s.formatDate;exports.formatDuration=s.formatDuration;exports.formatMetricComparison=s.formatMetricComparison;exports.formatRelativeTime=s.formatRelativeTime;exports.getTimezoneAbbreviation=s.getTimezoneAbbreviation;exports.getTimezoneName=s.getTimezoneName;exports.isAggregateTotalMemberMarker=s.isAggregateTotalMemberMarker;exports.objectsToCSV=s.objectsToCSV;exports.parseWithSourceTimezone=s.parseWithSourceTimezone;exports.presentAggregateGroupRow=s.presentAggregateGroupRow;exports.presentPivotHeader=s.presentPivotHeader;exports.requiresChunkedCsvExport=s.requiresChunkedCsvExport;exports.resolveAggregateTablePresentationContext=s.resolveAggregateTablePresentationContext;exports.resolveTimezone=s.resolveTimezone;exports.SEMAPHOR_GENERATED_COUNT_METRIC_ID=T.SEMAPHOR_GENERATED_COUNT_METRIC_ID;exports.TEMPORAL_BUCKET_PATTERN_TOKENS=T.TEMPORAL_BUCKET_PATTERN_TOKENS;exports.isTemporalBucketPreset=T.isTemporalBucketPreset;exports.resolveApplicableTemporalBucketFormat=T.resolveApplicableTemporalBucketFormat;exports.tokenizeTemporalBucketPattern=T.tokenizeTemporalBucketPattern;exports.validateTemporalBucketFormatApplicability=T.validateTemporalBucketFormatApplicability;exports.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET=c.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET;exports.TemporalBucketContractError=c.TemporalBucketContractError;exports.formatTemporalBucket=c.formatTemporalBucket;exports.parseResolvedTemporalBucketFormat=c.parseResolvedTemporalBucketFormat;exports.parseTemporalBucketValue=c.parseTemporalBucketValue;exports.resolveMetricResultAlias=c.resolveMetricResultAlias;exports.resolveTemporalBucketPresentation=c.resolveTemporalBucketPresentation;exports.PivotResultIdentityError=p.PivotResultIdentityError;exports.isPivotEmptyTupleAllowed=p.isPivotEmptyTupleAllowed;exports.isPivotSubtotalPrefix=p.isPivotSubtotalPrefix;exports.requirePivotHeaderMembers=p.requirePivotHeaderMembers;exports.requirePivotResultColumnIdentities=p.requirePivotResultColumnIdentities;exports.resolveQueryColumnKeyMapEntry=p.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=p.resolveUniqueQueryColumnKeyMapEntry;exports.parseRawTemporalValueMetadata=v.parseRawTemporalValueMetadata;exports.validateRawTemporalResultColumn=v.validateRawTemporalResultColumn;exports.buildFlatTableExportTotalsFooter=$;exports.formatCellValue=S;exports.formatPivotDataRow=P;exports.formatPivotTableForCSV=k;exports.formatRowForExport=y;exports.formatTableForCSV=h;exports.generatePivotHeaders=A;exports.generateTableCSV=_;exports.parseFlatTableExportTotalsByColumnId=B;exports.parseFlatTableExportTotalsRequest=N;
@@ -1,12 +1,12 @@
1
- import { i as _ } from "../chunks/format-types-CFHQoIuk.js";
2
- import { f as w, a as y, b as R } from "../chunks/pivot-result-lifecycle-B38AZx4a.js";
3
- import { M as L, E as G, P as H, R as K, z as U, w as W, G as Q, n as F, x as Y, C as J, D as X, o as Z, q as ee, d as re, c as oe, h as te, e as se, B as ne, g as le, F as ae, p as ie, m as ue, k as me, y as ce, i as fe, l as pe, t as be, A as Te, r as we, j as he, u as Ee, v as ye, s as Re } from "../chunks/pivot-result-lifecycle-B38AZx4a.js";
4
- import { f as C, a as v, b as p, e as h } from "../chunks/pivot-header-presentation-OpY8xzdT.js";
5
- import { A as ve, P as Ae, i as Se, m as Pe, q as de, s as ge, l as $e, c as Ve, d as ke, g as xe, h as Me, j as Be, o as Ie, p as Ne, n as je, t as ze, k as qe, r as Oe } from "../chunks/pivot-header-presentation-OpY8xzdT.js";
6
- import { q as De, ao as Le, am as Ge, ap as He, an as Ke, al as Ue } from "../chunks/validators-DhTaCK1O.js";
7
- import { i as Qe, T as Fe, h as Ye, j as Je, p as Xe, a as Ze, k as er } from "../chunks/temporal-bucket-Cc9fmx8s.js";
8
- import { P as or, b as tr, i as sr, c as nr, d as lr, r as ar, a as ir } from "../chunks/pivot-result-identity-CCMpd8ZA.js";
9
- import { p as mr, v as cr } from "../chunks/raw-temporal-contract-r_EMdR85.js";
1
+ import { i as z } from "../chunks/format-types-CFHQoIuk.js";
2
+ import { f as w, a as y, b as R } from "../chunks/pivot-result-lifecycle-O_roVguV.js";
3
+ import { M as L, E as G, P as H, R as K, z as U, w as W, G as X, n as F, x as Q, C as Y, D as J, o as Z, q as ee, d as re, c as oe, h as te, e as se, B as ne, g as le, F as ae, p as ie, m as ue, k as me, y as ce, i as fe, l as pe, t as be, A as Te, r as we, j as he, u as Ee, v as ye, s as Re } from "../chunks/pivot-result-lifecycle-O_roVguV.js";
4
+ import { f as C, a as S, b as p, e as h } from "../chunks/pivot-header-presentation-7XrwJYDm.js";
5
+ import { A as Se, D as Ae, F as ve, P as Pe, i as de, n as ge, s as $e, t as Ve, m as ke, c as Me, d as xe, g as _e, h as Be, k as Ie, o as Ne, p as Oe, q as qe, u as je, j as ze, l as De, r as Le } from "../chunks/pivot-header-presentation-7XrwJYDm.js";
6
+ import { q as He, ap as Ke, an as Ue, aq as We, ao as Xe, am as Fe } from "../chunks/validators-B5t1s8oh.js";
7
+ import { i as Ye, T as Je, h as Ze, j as er, p as rr, a as or, k as tr } from "../chunks/temporal-bucket-CUKJktCl.js";
8
+ import { P as nr, b as lr, i as ar, c as ir, d as ur, r as mr, a as cr } from "../chunks/pivot-result-identity-5v4hRVbc.js";
9
+ import { p as pr, v as br } from "../chunks/raw-temporal-contract-BEMf3avg.js";
10
10
  function A(r, e, t, o) {
11
11
  const s = r instanceof Date ? r.toISOString() : String(r), l = (o == null ? void 0 : o.browserTimezone) || t, n = (o == null ? void 0 : o.isSqlCard) ?? !1;
12
12
  if (e != null && e.useRelativeTime)
@@ -15,14 +15,14 @@ function A(r, e, t, o) {
15
15
  (e == null ? void 0 : e.sourceTimezone) || "auto"
16
16
  );
17
17
  const i = e != null && e.useCustomFormat && (e != null && e.customFormat) ? e.customFormat : (e == null ? void 0 : e.format) || "MM/dd/yyyy";
18
- return v(
18
+ return S(
19
19
  s,
20
20
  i,
21
21
  e != null && e.timezone && (e == null ? void 0 : e.timezone) !== "auto" ? e.timezone : n ? l : t,
22
22
  (e == null ? void 0 : e.sourceTimezone) || "auto"
23
23
  );
24
24
  }
25
- function S(r, e, t) {
25
+ function v(r, e, t) {
26
26
  if (r == null)
27
27
  return "";
28
28
  if (!t.useFormattedValues || !e)
@@ -57,7 +57,7 @@ function S(r, e, t) {
57
57
  function P(r, e) {
58
58
  return e.visibleColumns.map((t) => {
59
59
  const o = r[t], s = e.columnSettings[t];
60
- return S(o, s, {
60
+ return v(o, s, {
61
61
  useFormattedValues: e.useFormattedValues,
62
62
  timezone: e.timezone,
63
63
  locale: e.locale
@@ -75,7 +75,7 @@ function d(r, e) {
75
75
  }
76
76
  return t;
77
77
  }
78
- function B(r, e, t = `
78
+ function _(r, e, t = `
79
79
  `) {
80
80
  return d(r, e).join(t);
81
81
  }
@@ -129,7 +129,7 @@ function V(r, e, t) {
129
129
  o.push(i), e.showRowTotals && typeof n == "number" && (s += n);
130
130
  }), e.showRowTotals && o.push(s.toLocaleString(t.locale)), o;
131
131
  }
132
- function I(r, e, t) {
132
+ function B(r, e, t) {
133
133
  const o = [];
134
134
  if (t.includeHeaders) {
135
135
  const s = g(e);
@@ -159,7 +159,7 @@ function T(r, e, t) {
159
159
  if (s)
160
160
  throw new Error(`${t} contains unknown property "${s}"`);
161
161
  }
162
- function N(r, e = "tableTotalsRequest") {
162
+ function I(r, e = "tableTotalsRequest") {
163
163
  if (!f(r))
164
164
  throw new Error(`${e} must be an object`);
165
165
  if (T(r, ["source", "columns"], e), r.source !== "documentFlatTable")
@@ -227,7 +227,7 @@ function N(r, e = "tableTotalsRequest") {
227
227
  throw new Error(`${e}.columns may contain at most one label`);
228
228
  return { source: "documentFlatTable", columns: o };
229
229
  }
230
- function j(r, e = "tableTotalsByColumnId") {
230
+ function N(r, e = "tableTotalsByColumnId") {
231
231
  if (!f(r))
232
232
  throw new Error(`${e} must be an object`);
233
233
  const t = {};
@@ -250,7 +250,7 @@ function k(r) {
250
250
  const e = Number(r);
251
251
  return Number.isFinite(e) ? e : null;
252
252
  }
253
- function z(r) {
253
+ function O(r) {
254
254
  const e = r.visibleColumns.map((t) => {
255
255
  const s = Object.prototype.hasOwnProperty.call(
256
256
  r.totalsByColumnId,
@@ -271,95 +271,98 @@ function z(r) {
271
271
  `;
272
272
  }
273
273
  export {
274
- ve as AGGREGATE_TOTAL_MEMBER_MARKER,
275
- Qe as DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,
274
+ Se as AGGREGATE_TOTAL_MEMBER_MARKER,
275
+ Ye as DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,
276
+ Ae as DIRECT_CSV_EXPORT_MAX_ROWS,
277
+ ve as FULL_DATASET_CSV_EXPORT_MAX_ROWS,
276
278
  L as MissingResolvedRawTemporalFormatError,
277
- Ae as PivotHeaderPresentationError,
278
- or as PivotResultIdentityError,
279
+ Pe as PivotHeaderPresentationError,
280
+ nr as PivotResultIdentityError,
279
281
  G as PivotResultLifecycleError,
280
282
  H as PresentationExecutionSnapshotError,
281
283
  K as RawTemporalFormatContractError,
282
- De as SEMAPHOR_GENERATED_COUNT_METRIC_ID,
283
- Le as TEMPORAL_BUCKET_PATTERN_TOKENS,
284
- Fe as TemporalBucketContractError,
285
- Se as arrayToCSV,
284
+ He as SEMAPHOR_GENERATED_COUNT_METRIC_ID,
285
+ Ke as TEMPORAL_BUCKET_PATTERN_TOKENS,
286
+ Je as TemporalBucketContractError,
287
+ de as arrayToCSV,
286
288
  p as arrayToCSVRow,
287
289
  U as assertRawTemporalChunkClassificationAgreement,
288
- z as buildFlatTableExportTotalsFooter,
290
+ O as buildFlatTableExportTotalsFooter,
289
291
  W as classifyDeclaredSqlTemporalColumn,
290
- Q as createCanonicalPivotResultTransport,
292
+ X as createCanonicalPivotResultTransport,
291
293
  F as createPresentationExecutionSnapshot,
292
- Y as createRawTemporalChunkClassificationEvidence,
293
- J as deriveMetricInstanceAliasExpectations,
294
- X as derivePivotResultContractExpectations,
294
+ Q as createRawTemporalChunkClassificationEvidence,
295
+ Y as deriveMetricInstanceAliasExpectations,
296
+ J as derivePivotResultContractExpectations,
295
297
  h as escapeCSVValue,
296
298
  y as findResolvedNumericFormat,
297
299
  Z as findResolvedRawTemporalFormat,
298
300
  ee as findResolvedTemporalBucketFormat,
299
- Pe as formatAggregateGrandTotalLabel,
300
- de as formatAggregateGroupCell,
301
- ge as formatAggregateGroupRow,
302
- $e as formatAggregateSubtotalLabel,
303
- S as formatCellValue,
301
+ ge as formatAggregateGrandTotalLabel,
302
+ $e as formatAggregateGroupCell,
303
+ Ve as formatAggregateGroupRow,
304
+ ke as formatAggregateSubtotalLabel,
305
+ v as formatCellValue,
304
306
  re as formatCurrency,
305
- v as formatDate,
306
- Ve as formatDuration,
307
- ke as formatMetricComparison,
307
+ S as formatDate,
308
+ Me as formatDuration,
309
+ xe as formatMetricComparison,
308
310
  oe as formatNumber,
309
311
  te as formatNumberCustom,
310
312
  w as formatNumberWithColumnSettings,
311
313
  R as formatNumericCanonical,
312
314
  se as formatPercent,
313
315
  V as formatPivotDataRow,
314
- I as formatPivotTableForCSV,
316
+ B as formatPivotTableForCSV,
315
317
  ne as formatRawTemporalValue,
316
318
  C as formatRelativeTime,
317
319
  P as formatRowForExport,
318
320
  le as formatScientific,
319
321
  d as formatTableForCSV,
320
- Ye as formatTemporalBucket,
322
+ Ze as formatTemporalBucket,
321
323
  g as generatePivotHeaders,
322
- B as generateTableCSV,
323
- xe as getTimezoneAbbreviation,
324
- Me as getTimezoneName,
325
- Be as isAggregateTotalMemberMarker,
326
- _ as isNumericCanonicalFormat,
327
- tr as isPivotEmptyTupleAllowed,
328
- sr as isPivotSubtotalPrefix,
329
- Ge as isTemporalBucketPreset,
330
- Ie as objectsToCSV,
324
+ _ as generateTableCSV,
325
+ _e as getTimezoneAbbreviation,
326
+ Be as getTimezoneName,
327
+ Ie as isAggregateTotalMemberMarker,
328
+ z as isNumericCanonicalFormat,
329
+ lr as isPivotEmptyTupleAllowed,
330
+ ar as isPivotSubtotalPrefix,
331
+ Ue as isTemporalBucketPreset,
332
+ Ne as objectsToCSV,
331
333
  ae as parseCanonicalPivotResultTransport,
332
- j as parseFlatTableExportTotalsByColumnId,
333
- N as parseFlatTableExportTotalsRequest,
334
+ N as parseFlatTableExportTotalsByColumnId,
335
+ I as parseFlatTableExportTotalsRequest,
334
336
  ie as parseNumericCanonicalFormat,
335
337
  ue as parsePresentationExecutionSnapshot,
336
338
  me as parsePresentationScope,
337
339
  ce as parseRawTemporalChunkClassificationEvidence,
338
- mr as parseRawTemporalValueMetadata,
340
+ pr as parseRawTemporalValueMetadata,
339
341
  fe as parseResolvedNumericCanonicalFormat,
340
342
  pe as parseResolvedPresentationEntries,
341
343
  be as parseResolvedRawTemporalFormat,
342
- Je as parseResolvedTemporalBucketFormat,
343
- Xe as parseTemporalBucketValue,
344
- Ne as parseWithSourceTimezone,
344
+ er as parseResolvedTemporalBucketFormat,
345
+ rr as parseTemporalBucketValue,
346
+ Oe as parseWithSourceTimezone,
345
347
  Te as prepareRawTemporalFormatter,
346
- je as presentAggregateGroupRow,
347
- ze as presentPivotHeader,
348
- nr as requirePivotHeaderMembers,
349
- lr as requirePivotResultColumnIdentities,
350
- qe as resolveAggregateTablePresentationContext,
351
- He as resolveApplicableTemporalBucketFormat,
348
+ qe as presentAggregateGroupRow,
349
+ je as presentPivotHeader,
350
+ ir as requirePivotHeaderMembers,
351
+ ur as requirePivotResultColumnIdentities,
352
+ ze as requiresChunkedCsvExport,
353
+ De as resolveAggregateTablePresentationContext,
354
+ We as resolveApplicableTemporalBucketFormat,
352
355
  we as resolveCurrencyFractionDigits,
353
- Ze as resolveMetricResultAlias,
356
+ or as resolveMetricResultAlias,
354
357
  he as resolveNumericPresentation,
355
- ar as resolveQueryColumnKeyMapEntry,
358
+ mr as resolveQueryColumnKeyMapEntry,
356
359
  Ee as resolveRawTemporalFormat,
357
- er as resolveTemporalBucketPresentation,
358
- Oe as resolveTimezone,
359
- ir as resolveUniqueQueryColumnKeyMapEntry,
360
- Ke as tokenizeTemporalBucketPattern,
360
+ tr as resolveTemporalBucketPresentation,
361
+ Le as resolveTimezone,
362
+ cr as resolveUniqueQueryColumnKeyMapEntry,
363
+ Xe as tokenizeTemporalBucketPattern,
361
364
  ye as validateCardExportNumericPresentationSnapshot,
362
365
  Re as validateCardExportPresentationSnapshot,
363
- cr as validateRawTemporalResultColumn,
364
- Ue as validateTemporalBucketFormatApplicability
366
+ br as validateRawTemporalResultColumn,
367
+ Fe as validateTemporalBucketFormatApplicability
365
368
  };